2

这应该是显而易见的,但我似乎无法弄清楚。如果我构建一个 Gtk.PopoverMenu:

menu = Gio.Menu.new()
test = Gio.MenuItem.new(label='test', detailed_action='win.test')
menu.append_item(test)
popup = Gtk.PopoverMenu.new_from_model(menu)

我不知道如何将它附加到父小部件(在我的情况下是 ListBox 项)。API 文档说“Popovers 已附加到父小部件”,但似乎没有将其附加到父小部件的相关方法。尝试popup.popup()导致警告“在不在顶级窗口内的小部件上调用 gtk_widget_realize() 不会很好地工作。小部件必须在顶级容器内才能实现它们”,以及随后的段错误。

4

1 回答 1

2

要设置 的父级PopoverMenu,只需使用其set_parent()方法将父级设置为任何小部件:

...
popup = Gtk.PopoverMenu.new_from_model(menu)
popup.set_parent(parent_widget)
于 2022-02-21T17:33:01.930 回答