按钮在创建时激活,然后不起作用

时间:2013-08-28 20:47:50

标签: python button python-3.x tkinter

我是这种语言的新手,我老实说也输了。

from tkinter import *

class App:

    def __init__(self,master):

        self.var = ""

        frame = Frame(master)
        frame.pack()

        self.action = Button(frame,text="action",command=self.doAction())
        self.action.pack(side=LEFT)

    def doAction(self):
        print(self.var)

root = Tk()

app = App(root)

root.mainloop()

1 个答案:

答案 0 :(得分:1)

command=self.doAction()会在线路运行时(即创建时)调用doAction。您需要删除括号,以便在按钮调用它之前不会调用该函数:

self.action = Button(frame,text="action",command=self.doAction)

要将参数(在创建时知道)传递给函数,可以使用lambda(匿名函数):

self.action = Button(frame,text="action",command=lambda: self.doAction(x))

这会创建一个调用self.doAction(x)的新函数。同样,您可以使用命名函数:

def button_action(): 
    self.doAction(x)
self.action = Button(frame,text="action",command=button_action)