如何将 gtk4 PopoverMenu 附加到父窗口小部件?
How to attach a gtk4 PopoverMenu to a parent widget?
这应该很简单,但我似乎无法弄明白。如果我构建一个 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 docs 说“Popovers are attached to a parent widget”但是似乎没有相关的方法可以将它附加到父级。尝试 popup.popup()
会导致警告“在不在顶层 window 内的小部件上调用 gtk_widget_realize() 不会很好地工作。小部件必须在顶层容器内在意识到它们之前”,以及随后的段错误。
要设置 PopoverMenu
的父级,只需使用其 set_parent()
方法将父级设置为任何小部件:
...
popup = Gtk.PopoverMenu.new_from_model(menu)
popup.set_parent(parent_widget)
这应该很简单,但我似乎无法弄明白。如果我构建一个 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 docs 说“Popovers are attached to a parent widget”但是似乎没有相关的方法可以将它附加到父级。尝试 popup.popup()
会导致警告“在不在顶层 window 内的小部件上调用 gtk_widget_realize() 不会很好地工作。小部件必须在顶层容器内在意识到它们之前”,以及随后的段错误。
要设置 PopoverMenu
的父级,只需使用其 set_parent()
方法将父级设置为任何小部件:
...
popup = Gtk.PopoverMenu.new_from_model(menu)
popup.set_parent(parent_widget)