1

问题是如何在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 在三秒后按需要执行,但调用仍然没有事件。

4

0 回答 0