GTKBuilderを使用して、グレードファイルからウィジェットツリーを再利用する方法は?

StackOverflow https://stackoverflow.com/questions/4359798

質問

gtk.notebook on-the-flyに入力したいです。ユーザーがファイルを開くたびに、新しいノートブックタブが生成されます。かなり簡単です。私の問題は、Gladeを使用してUIを構築し、Notebook-Tabには子ウィジェットツリー(ScrolledWindow-> ViewPort-> Alignment-> Frame)が必要であることです。グレードファイルには、テンプレートノートブックタブがあります。これは、プレーンGTKでツリー全体をコーディングする必要がないように、複数回使用したいと考えています。 Libgladeを使用すると、ここでPygtk FAQで説明されているように、ウィジェットツリーを再利用できます。 http://faq.pygtk.org/index.py?file=faq22.011.htp&req=show 。 gtkbuilderでこれを行うにはどうすればよいですか?

前もって感謝します、

アーサー

役に立ちましたか?

解決

gtkbuilderでこのようにしてください:

builder = gtk.Builder()
builder.add_from_file("GUI.xml")
builder.connect_signals(self)
self.window1 = builder.get_object("window1")
self.window1.show()

編集:

私は最初は間違っていましたが、GtkBuilderが追加されるとオブジェクトをインスタンス化するようです。したがって、これを行う理想的な方法は、文字列を介して手動でウィジェットを追加することです

builder.add_from_string("""
<interface>
  <object class="GtkWindow" id="window1">
    <child>
      <object class="GtkComboBox" id="combobox1">
        <property name="model">liststore1</property>
      </object>
    </child>
  </object>
</interface>""")

self.window1 = builder.get_object("window1")

うまくいけば、これはうまくいきます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top