在python上,如何确定单击了哪个按钮

Dan*_*Dan 1 python tkinter button

如何运行if语句来确定单击了哪个按钮?我一直在环顾四周,但我是Tkinter的新手,我不太清楚我应该做什么.

    self.button1 = Tkinter.Button(self,text=u"Convert Decimal to Binary", command=self.OnButtonClick)
    self.button1.grid(column=1,row=1)

    self.button2 = Tkinter.Button(self,text=u"Convert Binary to Decimal", command=self.OnButtonClick)
    self.button2.grid(column=1,row=2)
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 5

您可以将每个按钮的command选项设置为lambda如下所示:

self.button1 = Tkinter.Button(self, ..., command=lambda: self.OnButtonClick(1))
...
self.button2 = Tkinter.Button(self, ..., command=lambda: self.OnButtonClick(2))
Run Code Online (Sandbox Code Playgroud)

然后,self.OnButtonClick接受一个将成为按钮"id"的参数.它会是这样的:

def OnButtonClick(self, button_id):
    if button_id == 1:
        # self.button1 was clicked; do something
    elif button_id == 2:
        # self.button2 was clicked; do something
Run Code Online (Sandbox Code Playgroud)


mar*_*eau 5

一种面向对象的方法是将单击的按钮传递给该OnButtonClick()方法:

    def OnButtonClick(self, button):
        # do stuff with button passed...
        ...
Run Code Online (Sandbox Code Playgroud)

为此,需要分两步创建和配置每个按钮。这是必要的,因为您需要将按钮作为参数传递给命令,而这不能在创建按钮本身的同一语句中完成:

    button1 = Tkinter.Button(self, text=u"Convert Decimal to Binary")
    button1.config(command=lambda button=button1: self.OnButtonClick(button))
    button2 = Tkinter.Button(self, text=u"Convert Binary to Decimal")
    button2.config(command=lambda button=button2: self.OnButtonClick(button))
Run Code Online (Sandbox Code Playgroud)