Orb*_*oss 8 python events tkinter button
我只是在学习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()
Run Code Online (Sandbox Code Playgroud)
你已经有了你的事件功能.只需将您的代码更正为:
"""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
Run Code Online (Sandbox Code Playgroud)
这与@Freak的答案相同,只是buttonClick()方法现在在class __init__方法之外.优点是,通过这种方式,您可以以编程方式调用操作.这是OOP编码的GUI中的传统方式.
小智 4
您应该指定单击按钮时调用的处理程序或函数。您可以通过将函数的名称(而不是调用函数)分配给command按钮的属性来完成此操作。
例如:
self.submitButton = Button(self.buttonClick, text="Submit", command=buttonClick)
Run Code Online (Sandbox Code Playgroud)
()请注意,指定buttonClick为command的属性时缺少self.submitButton。
请注意,您不需要event在 handler/function 中调用第二个参数buttonClick()。