我想创建一个弹出窗口,其中的按钮会在鼠标离开窗口时关闭。 (这是一个程序的子菜单。)
为此,我有一个函数,如果应该打开弹出窗口,则调用该函数。它包含以下代码:master = Tk()
fpy.ui.menu.submenu(master=master,[...more parameters...])
mainloop()
和一个方法(fpy.ui.menu.submenu(...))来创建其他所有东西。 此功能应尽可能保持干净。它是我为未来项目构建的API的一部分。
def submenu(master,[...more parameters...]):
master.overrideredirect(True)
a_frame = Frame(master, bg="grey")
#[codeblock to generate buttons]
a_frame.bind("<Leave>", destroy)
a_frame.pack()
a_frame.bind("<Leave>", destroy)
调用函数&#39;函数&#39;当鼠标离开框架时。现在我的问题开始了。 &#39;销毁&#39;函数应该破坏我的根(在这种情况下称为master)。
def destroy():
#how can I get the master-object?
master.destroy()
这会导致错误!如何通过此方法到达我想要销毁的对象?
答案 0 :(得分:0)
您可以使用destroy()
声明将其传递给lambda
函数:
a_frame.bind("<Leave>", lambda: destroy(master))
然后修改销毁功能的签名:
def destroy(master):
master.destroy()
与以前相同的lambda
语句,除了现在我们只是直接调用该方法而不是在另一个函数中处理它。
a_frame.bind("<Leave>", lambda: master.destroy())
当然,如果你想在destroy()
函数中做其他事情,这不是一个选项。