如何在Python Gtk3的MenuBar中重新排序MenuItems?

时间:2017-07-02 20:13:49

标签: python gtk gtk3 menubar

给定带有一些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也应该这样吗?

0 个答案:

没有答案