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

Python 方法在作为事件处理程序寻址时运行,python,events,user-interface,tkinter,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): s

我正在学习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()

这段代码似乎创建了框架和按钮,然后再次删除它们,而无需我调用instructions方法!我不明白为什么以及如何避免这种情况。我非常感谢你的帮助。

你自己别说了

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

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

self.b1["command"] = self.instructions()
或者在
说明
方法中

self.pack_forget()
编辑

试着换掉这个

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


是的,instructions方法正在运行,但是我如何在仍然使用instructions作为事件处理程序的情况下避免这种情况?我对Tkinter不太了解,但请尝试以下方法:
self.b1[“command”]=self.instructions
without()。如果此答案对您有帮助,请将其标记为正确答案。因此,如果其他人有同样的问题,他可以看到这个答案来解决它。
self.b1["command"] = self.instructions # without ()