tkinter optionmenu关闭事件

时间:2018-06-12 00:31:03

标签: python events tkinter optionmenu

我正在尝试在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一个

非常相似

0 个答案:

没有答案