0

我对这种语言很陌生,我真的迷路了。

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()
4

1 回答 1

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)
于 2013-08-28T21:11:08.967 回答