2011-07-29 40 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中的传统方式。

相关问题