2016-08-24 31 views
0

我用Glade創建了一個GtkBox,我在GtkBox的開始和結尾添加了一些組件,並在中間留下了一條空行。 現在,如何通過代碼在空行中添加新組件?例如:如何在GtkBox的特定行中附加組件?

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.18.3 --> 
<interface> 
    <requires lib="gtk+" version="3.12"/> 
    <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkBox" id="box1"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="orientation">vertical</property> 
     <child> 
      <object class="GtkButton" id="button1"> 
      <property name="label" translatable="yes">button</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      </object> 
      <packing> 
      <property name="expand">False</property> 
      <property name="fill">True</property> 
      <property name="position">0</property> 
      </packing> 
     </child> 
     <child> 
      <placeholder/> 
     </child> 
     <child> 
      <object class="GtkEntry" id="entry1"> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      </object> 
      <packing> 
      <property name="expand">False</property> 
      <property name="fill">True</property> 
      <property name="position">2</property> 
      </packing> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 

如何通過代碼在GtkBox的某個位置添加組件?

編輯: 顯然GtkBox沒有一個方法,像attachGtkGrid

+0

你嘗試過什麼嗎?如果你做了,哪部分不起作用?你能顯示代碼嗎?回答「我該怎麼做X」類型的開放式問題是相當困難的,而不知道你已經解決了什麼問題...... – jku

+0

我沒有嘗試過任何東西,因爲根據我的[研究](http://lazka.github .io/pgi-docs/index.html#Gtk-3.0/classes/Box.html#methods),'GtkBox'沒有一個方法可以告訴你想要的位置。 'GtkGrid'具有[attach方法](http://lazka.github.io/pgi-docs/index.html#Gtk-3.0/classes/Grid.html#Gtk.Grid.attach),但是'GtkBox'似乎沒有類似的東西。 'GtkGrid'似乎更加靈活地選擇職位,但我不需要列只是行,所以我認爲'GtkBox'就夠了。 –

回答

3

有您的問題,多種解決方案:

  1. 容器存放他們的孩子的裝填特性(東西像expandfill,你猜對了,position)。您可以使用container_widget.child_set_property(child_widget, 'position', index)來更改子窗口小部件的位置。
  2. 使用Grid而不是Box。如果您使用grid.attach方法,則可以選擇在哪裏添加子窗口小部件,或者將窗口小部件添加爲Box(因爲它們都是從GtkContainer繼承的)。
  3. 而不是讓空白處留空,插入另一個(不可見)容器小部件。通過這種方式,您可以輕鬆添加子窗口小部件,而無需對其在框中的位置進行硬編碼。
相關問題