问题是如何在windows下使用tk.menu.unpost方法。
编码:
if __name__ == "__main__":
from tkinter import Menu, Tk, Label
t = Tk()
label = Label(t, text="Label")
label.pack()
menu = Menu(t, tearoff=0)
menu.add_command(label="command")
def unpost(event=None):
print(event)
menu.unpost()
def post(event=None):
print(event)
menu.after(3000, unpost)
try:
menu.tk_popup(menu.winfo_pointerx(), menu.winfo_pointery())
finally:
menu.grab_release()
label.bind("<Button-3>", post)
t.bind("<u>", unpost)
label.bind("<u>", unpost)
menu.bind("<u>", unpost)
t.mainloop()
在 Linux 上,unpost 方法在由事件触发或通过 menu.after 触发时起作用。在 Windows 平台上,键绑定显然被抑制,函数 unpost 在三秒后按需要执行,但调用仍然没有事件。