我只是学习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()
答案 0 :(得分: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
这与@Freak的答案相同,除了buttonClick()
方法现在不在类__init__
方法之外。优点是,通过这种方式,您可以以编程方式调用操作。这是OOP编码的GUI中的传统方式。
答案 1 :(得分:2)
您应该指定单击Button时调用的处理程序或函数。你可以这样做,我将函数的名称(不调用函数)分配给Button的属性command
。
例如:
self.submitButton = Button(self.buttonClick, text="Submit", command=buttonClick)
请注意,()
作为buttonClick
的{{1}}属性时,command
不存在。
请注意,您的处理程序/函数self.submitButton
中不需要名为event
的第二个参数。
答案 2 :(得分:2)
我发现了一个名为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()