2017-02-21 12 views
0

私はPython 3とGtk 3.22.5を使用しており、既存のメニューコードをGtk.UiManagerからGtk.Builderに変更しようとしています。コードは、メニューバーをボックスに挿入します。もともと、これは働いていた:Python Gtk3 +でGtk.BuilderからGtk.Widgetを抽出するには?

menubar = uimanager.get_widget("/MenuBar") 
box.pack_start(menubar, False, False, 0) 

をXMLをBuilderのメニュー定義を移行した後、私はこれがあります。

menubar = builder.get_object("menubar") 
box.pack_start(menubar, False, False, 0) 

をしかし、型の不一致があります:私はどのように

box.pack_start(menubar, False, False, 0) 
TypeError: argument child: Expected Gtk.Widget, but got gi.repository.Gio.Menu 

ビルダーからGtk.Widgetを抽出しますか?

答えて

0

あなたのmenubarオブジェクトがメニューバーではなくメニューモデルであるように見えます。メニューモデルはウィジェットではなく、ボックスにパックすることはできません。

gtk_menu_bar_new_from_model()を使用してメニューバーを作成し、それをウィンドウに追加する必要があります。

また、メニューモデルXMLを別のGtkBuilderファイルに入れて、パスgtk/menus.uiでGResourceに入れると、ドキュメントhereの説明に従ってメニューバーが自動的に作成されます。

関連する問題