我使用Tkinter Menu小部件在python应用程序中实现了一个信息弹出窗口。我在根窗口的画布上有一个Text小部件。我创建了一个以小组为父级的Menu小部件。当我检测到鼠标悬停在文本小部件上时,我使用menuWidget.post()发布弹出菜单。当我从文本小部件中获得离开事件时,我的意图是通过调用menuWidget.unpost()使弹出窗口消失,只有弹出菜单才会消失,直到我单击文本小部件外的其他位置。
首先,这是一个实现信息弹出窗口的理智方法吗?谁能告诉我为什么弹出菜单不会消失?
答案 0 :(得分:3)
这不是进行信息弹出窗口的正确方法。在Mac和Windows机器上,菜单是本机控件。因此,unpost
命令不起作用,因为tk将控制权交给系统事件循环以获得特定于平台的行为。
你想要使用的是一个设置了overrideredirect
标志的顶层窗口。这使您可以在任何地方显示无边框窗口。这样做的好处是你不仅限于简单的文本 - 你可以把你想要的东西放在那个顶层 - 另一个文本小部件,画布,按钮等。