2012-04-19 4 views
0

처음으로 Tkinter로 실험 중이며 버튼을 클릭 할 때 함수를 호출하려고합니다. 이것은 내 코드의 일부입니다. mt는 라벨에 무엇을 붙일 수 있도록 라벨에 붙임으로써 내가 만든 동적 인 라벨을 가리키고 있습니다. 사용자가 입력 상자에 무언가를 입력하고 단추를 누르면 입력 된대로 레이블이 변경됩니다.Tkinter에서 버튼을 클릭했을 때 액션을 호출하는 방법

def new(self): 
     mt.set("New") 
     e1 = Entry(master) 
     e1.pack() 
    def new_ok(self): 
     mt.set("OK") 
     #the next part is what I need help with 
     if (checks if button has been clicked) button has been clicked: 
      mt.set("#what it says in the entry box#") 

어떻게해야합니까? 튜토리얼을보고 읽었지만 아무도 버튼이 눌려 있는지 확인하고 응답하는 방법을 분명히 인정하지 않았습니다.

+0

거의 당신이 당신의 자신을 만들려고하는 것처럼 : 당신은 당신이 엔트리 위젯의 내용을 변경으로
라벨을 업데이트 할하지 않는 한

는 제어 변수 가능성이 필요하지 않습니다 이벤트 루프는 Tkinter의 직업이지 당신 것이 아닙니다. Tkinter는 "전화하지 마세요, 제가 전화 할게"정책이 있습니다. 콜백 (callback)을 주면 올바른 이벤트가 발생하면 호출합니다. 존 게인즈 주니어 (John Gaines Jr)의 대답은 그것이 어떻게 완료되었는지를 보여줍니다. –

답변

2

질문 : "라벨 위젯을 어떻게 업데이트합니까?"
그러면 위젯의 configure 메소드가 사용됩니다.

# Tkinter in Python 2.7 & tkinter in 3.2 
import Tkinter as tk 

class GUI(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 

     bF = tk.Frame(self, bd=8, relief='sunken') 
     bF.pack(expand='true', fill='x') 
     changeButton = tk.Button(bF, text='Change', bd=4, fg='white', 
           relief='groove', activebackground='green', 
           command=self.change_label) 
     changeButton.pack() 

     self.entryLabel = tk.Label(self, text='Hello') 
     self.entryLabel.pack() 

     self.mEntry = tk.Entry(self, bd=4, relief='sunken') 
     self.mEntry.pack() 

    def change_label(self): 
     data = self.mEntry.get() 
     self.entryLabel.configure(text=data) 


gui = GUI() 
gui.mainloop() 
당신은 수업이 예제처럼 GUI를 확인하는 것이 좋습니다

;
그런 식으로 자기를 사용할 수 있습니다. 접두어는 다른 메소드에서 만들어진 위젯을 나타냅니다.

예를 들어, 'mt'가 control variable 인 것처럼 보일 수 있습니다.
대답은 여전히 ​​클래스를 만드는 것이므로 자기를 사용할 수 있습니다. 접두사.

import Tkinter as tk 

class GUI(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 

     bF = tk.Frame(self, bd=8, relief='sunken') 
     bF.pack(expand='true', fill='x') 

     var = tk.StringVar() 
     var.set('Hello') 
     entryLabel = tk.Label(self, textvariable=var) 
     entryLabel.pack() 

     mEntry = tk.Entry(self, bd=4, relief='sunken', textvariable=var) 
     mEntry.pack() 

gui = GUI() 
gui.mainloop() 
2

나는 Tkinter가 아니지만, Tkinter의 모듈 문서에서 볼 수있는 첫 번째 것 중 하나는 A Simple Hello World Program이며 질문에 대한 답이 있습니다. 대부분의 GUI 툴킷과 마찬가지로 응답은 콜백 또는 이벤트 핸들러 함수입니다. 멤버 함수 say_hiHello 버튼의 콜백입니다.

+0

감사하지만 항목이 다른 함수에 정의되어있을 때 새 함수에서 항목을 호출하는 방법을 알고 싶었습니다. – udpatil

관련 문제