给定带有一些MenuItem的Gtk.MenuBar,我正在寻找一种重新排列MenuItem出现顺序的方法。
这是一个带有两个MenuItems“foo”和“bar”的基本MenuBar:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
win= Gtk.Window()
mbar= Gtk.MenuBar()
win.add(mbar)
m1= Gtk.MenuItem('foo')
mbar.append(m1)
m2= Gtk.MenuItem('bar')
mbar.append(m2)
win.connect('destroy', Gtk.main_quit)
win.show_all()
Gtk.main()
“foo”MenuItem将保留为“bar”。我现在想把“bar”移到“foo”的左边。
与Menu类不同,MenuBar没有reorder_child
method:
mbar.reorder_child(m2, 0)
# throws: 'MenuBar' object has no attribute 'reorder_child'
它也没有像许多其他容器小部件一样的“位置”子属性。
mbar.child_set_property(m2, 'position', 0)
# shows warning: container class 'GtkMenuBar' has no child property named 'position'
所以我能想到的唯一解决方案是删除“bar”然后将其插入所需的位置:
mbar.remove(m2)
mbar.insert(m2, 0)
# works
所以我的问题是:有没有更好的方法来重新排序MenuBar中的MenuItems?其他容器小部件提供了一种重新排序其子节点的方法,所以MenuBar也应该这样吗?