1

我正在使用 GtkMenuToolButton,它有一个按钮和一个菜单。当您单击箭头时,将打开菜单。我想让按钮也打开相同的菜单。简单地在“clicked”回调中发出“show-menu”是行不通的。请帮助如何使这项工作。

4

2 回答 2

1

我目前最终这样做了:

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

总的来说,它做我想要的=)

于 2012-10-10T20:31:37.753 回答
1

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

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

前两个None是父菜单和父菜单项(不适用)。第二个Nones 是一个定位回调函数(稍后会详细介绍)和要传递给它的数据。0是鼠标按钮,如果菜单是由按下鼠标按钮启动的(但你应该传递 0,因为我认为在你的情况下它是鼠标按钮释放或按键。)最后一个参数是给菜单弹出事件。

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

def positioning_function(menu, data=None):
    # ...magic...
    return x, y, push_in

push_inTrue如果您希望重新定位菜单以使其始终适合屏幕,则应该是。似乎是个好主意。您可以通过查看工具按钮的x;来获得良好的价值。读取该对象的、和属性并计算出放置菜单的好位置。yget_allocation()xywidthheight

于 2012-10-10T20:20:42.920 回答