方法在作为事件处理程序被寻址时运行

时间:2013-12-23 00:33:36

标签: python events user-interface tkinter

我正在学习Tkinter,而且我对编程很陌生。

我试图创建一个包含框架的窗口,其中包含一个删除包含按钮的框架的按钮。这是我到目前为止所写的:

class Menu(Frame):
    def __init__(self, master):
        super(Menu, self).__init__(master)
        self.pack()
        self.create_bttn()

    def create_bttn(self):
        self.b1 = Button(self, text ="Instruktioner")
        self.b1["command"] = self.instructions()
        self.b1.pack()

    def instructions(self):
        self.pack_forget()

此代码似乎创建了框架和按钮,然后再次删除它们,而我没有调用指令方法!我不明白为什么以及如何避免这种情况。我很感激任何帮助。

2 个答案:

答案 0 :(得分:1)

当您实例化Menu对象时,它会调用create_bttn(),最后一个方法会调用self.instructions()。您可能想要修改以下某些行:

self.b1["command"] = self.instructions()

instructions方法

self.pack_forget()

修改

尝试替换此

self.b1["command"] = self.instructions()

self.b1["command"] = self.instructions # without () 

答案 1 :(得分:0)

不要自己打电话。

    self.b1["command"] = self.instructions