2010-12-01 88 views
1

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

首先,这是一个理智的方法来实现信息弹出?谁能告诉我为什么弹出菜单不会消失?

回答

2

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

你想要的是使用overrideredirect标志设置的上层窗口。这使您可以在任何地方显示无边框窗口。这个好处是,你不限于简单的文字 - 你可以把任何你想要的东西放在顶层 - 另一个文本小部件,画布,按钮等。

+0

明白了Bryan。编码并使用TopLevel。然而,错过了投影效果。 – 2010-12-01 22:06:40