0

我正在尝试向图像添加工具提示。按照PyGTK 教程,这似乎应该有效:

image = gtk.Image()
image.set_from_file(image_path)
box.pack_start(image, expand=False)

tooltip = gtk.Tooltips()
tooltip.set_tip(image, "Hello!")

除非它没有。当我将鼠标悬停在图像上时没有任何反应。但是,我知道这适用于按钮(我运行了教程中的示例代码)。

使用 GTK 2.12 及更高版本,我可能只能使用image.set_tooltip_text("Hello!"),但我被困在 2.10.4 并且必须使用gtk.Tooltips.

编辑

根据以下文档gtk.Tooltips

工具提示只能在有自己的 X 窗口的小部件上设置。要检查小部件是否有自己的窗口,请使用widget.flags()&gtk.NO_WINDOW. 要将工具提示添加到没有自己的窗口的小部件,请将小部件放在 gtk.EventBox 中,然后将工具提示添加到事件框。

所以这解决了我的问题,但让我有点困惑。我检查了按钮的标志,它具有与gtk.NO_WINDOW图像相同的标志。那么为什么按钮不需要 EventBox 而图像却需要呢?

4

1 回答 1

0

为了满足其接口,GktButton 在内部为自己创建了一个事件框(嗯,类似于事件框)。即它在一个不可见的gdk 窗口中捕获事件。GtkImage 没有类似的接口来满足,所以它不需要捕获事件。

也许这是按钮内部实现的一个意外,使用工具提示界面可以在没有在事件框中嵌入按钮的情况下工作,或者工具提示界面实际上取决于 gdk 窗口是否可见,而 Widget 界面缺少那种标志。

于 2012-09-25T21:08:54.663 回答