2013-10-13 3 views
0

대화 형 파이썬 프로그래밍에 새로운 것이므로 나와 함께하시기 바랍니다. Python 3.3에서 PyCharm을 사용하고 있습니다.tkinter 위젯 인터페이스 대화 형 버튼

내가 두 개의 텍스트 입력 필드와 두 개의 버튼과 대화 창을 끌어 내리는 기능을 생성 할 :

- 첫번째 버튼 (START)가 실행 나는이 다음 구축을 시도하고

작은 텍스트 검색 기능 (내가 이미 작성하고 테스트 한), 두 번째 버튼 (QUIT)은 앱을 종료합니다.

첫 번째 텍스트 입력 필드는 검색 할 문자열 (예 : "Hello Stack World")을 사용하는 반면 다른 텍스트 입력 필드는 첫 번째 입력 문자열 (예 : "스택") 내에서 검색 할 문자열을 사용합니다. .

두 개의 텍스트 필드가 채워지면 '시작'버튼을 누르면 텍스트 검색 기능이 시작되고 'QUIT'버튼을 누르면 프로그램이 중지됩니다.

'끝내기'버튼은 정상적으로 작동하지만 '시작'버튼은 아무런 효과가 없습니다. 내 프로그램이 실제로 내 프로그램을 무한 루프로 보냅니다.

모든 도움은 정말 감사하겠습니다. 나는 인터페이스/위젯 프로그래밍 초보자입니다.

미리 감사드립니다.

import tkinter 
from tkinter import * 

class Application(Frame): 

def text_scan(self): 
    dataf = str(input()) '''string to be searched''' 
    s = str(input())  ''' string to search for''' 
    ''' ... I will leave out the rest of this function code for brevity''' 

def createWidgets(self): 

    root.title("text scan") 
    Label (text="Please enter your text:").pack(side=TOP,padx=10,pady=10) 
    dataf = Entry(root, width=10).pack(side=TOP,padx=10,pady=10) 

    Label (text="Please enter the text to find:").pack(side=TOP,padx=10,pady=10) 
    s = Entry(root, width=10).pack(side=TOP,padx=10,pady=10) 

    self.button = Button(root,text="START",command=self.text_scan) 
    self.button.pack() 

    self.QUIT = Button(self) 
    self.QUIT["text"] = "QUIT" 
    self.QUIT["fg"] = "red" 
    self.QUIT["command"] = self.quit 

    self.QUIT.pack({"side": "left"}) 

def __init__(self, master=None): 
    Frame.__init__(self, master) 
    self.filename = None 
    self.pack() 
    self.createWidgets() 

root = Tk() 
root.title("text scan") 
root.quit() 
app = Application(master=root) 
app.mainloop() 

답변

2

당신은 input와 GUI를 혼합 할 수 없습니다 : 지금 그것을 가지고

여기 내 코드입니다. 입력 위젯에서 값을 얻으려면 s.get()dataf.get()을해야합니다. 그러나이를 수행하기 전에 위젯을 작성할 때 pack에 대한 호출을 제거하고이를 별도의 명령문으로 옮겨야합니다. 그 이유는 packNone을 반환하기 때문에 현재 datafsNone입니다. 또한 위젯에 대한 참조를 클래스 속성으로 저장해야합니다.

def text_scan(...): 
    dataf_value = self.dataf.get() 
    ... 
... 
self.dataf = Entry(...) 
self.dataf.pack(...) 
... 
+0

순수한 천재! 정말 고맙습니다. 이 주제에 관해서는 초보자가 아니기 때문에 text_scan 함수 결과 (검색 결과)를 같은 창에 표시하는 방법에 대해 올바른 방향으로 가르쳐 주시겠습니까? 바로 지금 콘솔에 출력됩니다. 다시 한 번 감사드립니다! –