如何在发出'clicked'信号时使GtkMenuToolButton打开相同的菜单?

时间:2012-10-10 11:35:51

标签: python gtk

我正在使用GtkMenuToolButton,它有一个按钮和一个菜单。当您单击箭头时,菜单将打开。我也希望按钮打开相同的菜单。只需发出" show-menu"在"点击"回调没有用。请帮助如何使这项工作。

2 个答案:

答案 0 :(得分:1)

创建菜单时,将其引用保存为self.tool_button_menu或其他内容;然后在clicked回调中,调用

self.tool_button_menu.popup(None, None, None, None, 0, Gtk.get_current_event_time())

前两个None是父菜单和父菜单项(不适用)。后两个None是定位回调函数(一分钟内更多)和传递给它的数据。 0是鼠标按钮,如果菜单是通过按下鼠标按钮启动的(但你应该传递0,因为我认为在你的情况下它是鼠标按钮释放或按键按下。)最后一个参数是时间戳给菜单弹出事件。

现在定位功能。它需要两个参数并返回三个:

def positioning_function(menu, data=None):
    # ...magic...
    return x, y, push_in
如果您希望重新定位菜单以使其始终适合屏幕,则

push_in应为True。似乎是个好主意。通过查看工具按钮的x,您可以获得yget_allocation()的良好价值;阅读该对象的xywidthheight属性,并计算放置菜单的好地方。

答案 1 :(得分:1)

我目前最终这样做了:

  • 而不是GtkMenuToolButton我有自定义内容的GtkToolItem
  • 在自定义内容中,我有GtkMenuButton
  • 在那个内部,我删除默认的GtkArrow并将其替换为带有Label + GtkArrow的1x2 GtkGrid

作为一个整体,它做我想要的=)