如何处理Button click事件

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)

joa*_*uin 7

你已经有了你的事件功能.只需将您的代码更正为:

   """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)

()请注意,指定buttonClickcommand的属性时缺少self.submitButton

请注意,您不需要event在 handler/function 中调用第二个参数buttonClick()