我使用 Tkinter 菜单小部件在 python 应用程序中实现了信息弹出窗口。我在根窗口的 Canvas 上有一个文本小部件。我创建了一个以 root 作为其父级的菜单小部件。当我检测到鼠标悬停在文本小部件上时,我使用 menuWidget.post() 发布弹出菜单。当我从文本小部件收到离开事件时,我的目的是通过调用 menuWidget.unpost() 让弹出窗口消失,只有弹出菜单不会消失,直到我单击文本小部件之外的其他位置。
首先,这是实现信息弹出窗口的合理方法吗?谁能告诉我为什么弹出菜单不会消失?
最佳答案
这不是弹出信息窗口的正确方法。在 Mac 和 Windows 机器上,菜单是 native 控件。因此,unpost
命令不起作用,因为 tk 将控制权交给系统事件循环以获得特定于平台的行为。
您想要的是使用设置了 overrideredirect
标志的顶级窗口。这使您可以在任何您想要的地方显示无边框窗口。这样做的好处是,您不仅限于简单的文本 - 您可以在顶层放置任何您想要的内容 - 另一个文本小部件、 Canvas 、按钮等。
关于python - 使用 Tkinter 进行“悬停”弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328603/