python - 使用 Tkinter 进行“悬停”弹出窗口

标签 python tkinter

我使用 Tkinter 菜单小部件在 python 应用程序中实现了信息弹出窗口。我在根窗口的 Canvas 上有一个文本小部件。我创建了一个以 root 作为其父级的菜单小部件。当我检测到鼠标悬停在文本小部件上时,我使用 menuWidget.post() 发布弹出菜单。当我从文本小部件收到离开事件时,我的目的是通过调用 menuWidget.unpost() 让弹出窗口消失,只有弹出菜单不会消失,直到我单击文本小部件之外的其他位置。

首先,这是实现信息弹出窗口的合理方法吗?谁能告诉我为什么弹出菜单不会消失?

最佳答案

这不是弹出信息窗口的正确方法。在 Mac 和 Windows 机器上,菜单是 native 控件。因此,unpost 命令不起作用,因为 tk 将控制权交给系统事件循环以获得特定于平台的行为。

您想要的是使用设置了 overrideredirect 标志的顶级窗口。这使您可以在任何您想要的地方显示无边框窗口。这样做的好处是,您不仅限于简单的文本 - 您可以在顶层放置任何您想要的内容 - 另一个文本小部件、 Canvas 、按钮等。

关于python - 使用 Tkinter 进行“悬停”弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328603/

相关文章:

python - pandas read_csv 列标题中带有井号

python - 在Django中上传图片

带有网络摄像头的 Python 2.7 CV2 和 Tkinter

python - 在 python 中使用 cntk 训练模型

python - 没有for循环的等距元素的矩阵计算

python - 如何通过 id 连接两个模型(没有外键)并按管理中的链接模型字段排序

python - 如何将输入从条目添加到Python中的标签?

python - 如何检测多个屏幕

python - 在 tkinter python 中围绕光标绘制一个定义大小的圆圈

Python:如何将 Tkinter 文本标签与信息关联并在事件中访问它们?