我是这种语言的新手,我老实说也输了。
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()
答案 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)