2012-04-19 72 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在這裏有一個「不要打電話給我,我會給你打電話」的政策。你給它一個回調,並在正確的事件觸發時調用它。 John Gaines Jr的答案中的鏈接顯示了它是如何完成的。 – 2012-04-19 22:20:48

回答

2

如果問題是:「您如何更新Label小部件?」
然後答案是與小部件的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 wiz,但我在Tkinter的模塊文檔中看到的第一件事情之一是A Simple Hello World Program,它有你的問題的答案。 (與大多數GUI工具包一樣,答案是回調函數或事件處理函數。)成員函數say_hiHello按鈕的回調函數。

+0

謝謝,但我也想知道如何在不同的函數中定義條目時如何調用新函數中的條目 – udpatil 2012-04-20 00:01:30

相關問題