2011-07-29 82 views
4

我只是學習Python和我有基本的概念了,並且已經幾個命令行程序。我現在正在學習如何用Tkinter創建GUI。如何處理一個按鈕單擊事件

我創建了一個簡單的GUI來接受來自Entry小部件的一些用戶信息,然後當用戶單擊提交時,它應該彈出一個對話框。

該對話框應詢問的名字姓氏

的問題是,我不知道如何來處理該事件,當用戶點擊提交。

這裏是我的代碼:

from Tkinter import * 

class GUI(Frame): 

    def __init__(self,master=None): 
     Frame.__init__(self, master) 
     self.grid() 

     self.fnameLabel = Label(master, text="First Name") 
     self.fnameLabel.grid() 

     self.fnameEntry = Entry(master) 
     self.fnameEntry.grid() 

     self.lnameLabel = Label(master, text="Last Name") 
     self.lnameLabel.grid() 

     self.lnameEntry = Entry(master) 
     self.lnameEntry.grid() 

     self.submitButton = Button(self.buttonClick, text="Submit") 
     self.submitButton.grid() 


    def buttonClick(self, event): 
     """ handle button click event and output text from entry area""" 
     pass 


if __name__ == "__main__": 
    guiFrame = GUI() 
    guiFrame.mainloop() 

回答

1

您應該指定一個處理,或功能,當您單擊按鈕時調用。您可以將此功能的名稱(不是調用函數)分配給Button的屬性command

例如:

self.submitButton = Button(self.buttonClick, text="Submit", command=buttonClick) 

注意作爲self.submitButtoncommand屬性分配buttonClick當沒有()

請注意,您的處理程序/函數buttonClick()中不需要第二個參數event

1

我找到了一個不錯的參考文件Thinking in Tkinter,我把它修剪了一下。我試圖讓它適合你想要的東西。

from tkinter import * 

class GUI(Frame): 

    def __init__(self,master=None): 
     Frame.__init__(self, master) 
     self.grid() 

     self.fnameLabel = Label(master, text="First Name") 
     self.fnameLabel.grid() 

     self.fnameEntry = StringVar() 
     self.fnameEntry = Entry(textvariable=self.fnameEntry) 
     self.fnameEntry.grid() 

     self.lnameLabel = Label(master, text="Last Name") 
     self.lnameLabel.grid() 

     self.lnameEntry = StringVar() 
     self.lnameEntry = Entry(textvariable=self.lnameEntry) 
     self.lnameEntry.grid() 

     def buttonClick(): 
      print("You pressed Submit!") 
      print(self.fnameEntry.get() + " " + self.lnameEntry.get() +", 
        you clicked the button!") 

     self.submitButton = Button(master, text="Submit", command=buttonClick) 
     self.submitButton.grid() 

if __name__ == "__main__": 
    guiFrame = GUI()  
    guiFrame.mainloop() 
5

您已經擁有了您的活動功能。只需要修正您的代碼:

"""Create Submit Button""" 
    self.submitButton = Button(master, command=self.buttonClick, text="Submit") 
    self.submitButton.grid() 

def buttonClick(self): 
    """ handle button click event and output text from entry area""" 
    print('hello') # do here whatever you want 

這是相同@現在除了buttonClick()方法怪物的回答是類__init__方法之外。這樣做的好處是可以通過編程方式調用該操作。這是OOP編碼GUI中的傳統方式。

相關問題