我可以让自定义的pygtk提示框在光标悬停时一直显示吗?

0 投票
1 回答
1162 浏览
提问于 2025-04-17 03:32

请看下面的代码片段:

    import gtk

    def callback(widget, x, y, keyboard_mode, tooltip):
        hbox = gtk.HBox(False, 8)
        button = gtk.Button('Exit Tooltip')
        label = gtk.Label('Tooltip text')
        hbox.pack_start(label)
        hbox.pack_start(button)
        hbox.show_all()
        tooltip.set_custom(hbox)
        return True

    label = gtk.Label('Test label')
    label.set_has_tooltip(True)
    label.connect('query-tooltip', callback)

在这里,我创建了一个自定义的提示框,里面有一个关闭按钮。现在我希望这个提示框能够保持显示,直到我点击那个关闭按钮。我在谷歌上搜索了一下,但没有找到什么有用的信息。此外,我还想知道在关闭提示框时会发出哪些信号/事件

类似的问题在JQuery/JavaScript/Ajax的提示框中处理得很顺利,但在gtk/pygtk中就没那么幸运了 :(

提前谢谢大家...

1 个回答

0

我也遇到过这个问题,按照我所知道的,似乎没有办法确定提示框会显示多久。

我做的(也推荐你这样做)是自己制作一个“提示框”,然后通过一个事件框设置它的背景颜色,比如黄色,或者你喜欢的其他颜色。确保一开始不要显示它。这只是一个简化的代码示例,具体的定位和大小你需要在自己的项目中调整。

color = gtk.gdk.rgb_get_colormap().alloc_color('black')
ebTooltip = gtk.EventBox()
btnTooltip = gtk.Button("Close")
ebTooltip.add(btnTooltip)
ebTooltip.modify_bg(gtk.STATE_NORMAL, color)

现在,你只需要通过你的回调函数来控制这个事件框的显示和隐藏。要显示它,可以调用...

ebTooltip.show()

要隐藏它(可能是在你关闭按钮被点击的时候)...

ebTooltip.hide()

希望这能解决你的问题!

撰写回答