我正在尝试在tkinter中显示optionmenu项目的工具提示。我已经想出如何做到这一点。我留下的问题是关闭工具提示(顶级)窗口。我想在用户选择一个选项或在optionmenu外部点击时关闭选项菜单的菜单。进入和离开事件似乎没有成功。任何帮助将不胜感激!
编辑:我已经添加了一些我尝试过的代码。每当我将鼠标悬停在菜单项1上时(这是我想要的),就会发生“测试”打印,但是每当用户打开或关闭整个菜单时,我都想触发进入和离开事件。我尝试将它们绑定到optionmenu但它不可靠,有时会在不应该触发时触发事件。
from tkinter import Tk, Frame, BOTH, Menu, Label, SUNKEN, X, BOTTOM
import tkinter as tk
class Application(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background = "white")
self.parent = parent
vals = ["1","2","3"]
var = tk.StringVar()
var.set("1")
option = tk.OptionMenu(root,var,*vals)
option.pack()
t = option.children["menu"]
tk.Menu
#Do I need to unbind
#t.bind("<<MenuSelect>>", self.test_func)
t.bind("<<MenuSelect>>", self.test_func)
t.bind("<Enter>",self.enter_func)
t.bind("<Leave>",self.leave_func)
def test_func(self,event = None):
if self.parent.call(event.widget,"index","active") == 0:
print("test")
def enter_func(self,event=None):
print("entered")
def leave_func(self,event=None):
print("left")
root = tk.Tk()
Application(root)
root.mainloop()
我发现关闭工具提示(示例中未显示)的一种方法是跟踪与optionmenu相关联的变量,并在其更改时杀死顶部窗口。但是,如果用户打开菜单,将鼠标悬停在选项上,然后在菜单项外单击,则顶部窗口工具提示会保留,因为菜单项永远不会更改。
问题与this一个
非常相似