2016-05-13 25 views
1

所以,我一直在開發這個應用程序的工作,基本上允許用戶選擇他們的部門,建築物和地板。這將顯示所選位置的平面圖,他們可以在該平面圖上選擇不同的打印機。它還帶來了另一個組合框,他們可以通過名稱,打印機進行選擇。我已經按照我希望它們顯示的順序創建了組合框:Department,Building,Floor,Printer。儘管如此,它們並沒有顯示出來。這是他們如何顯示:ComboBox Order。我猜這是因爲Floor組合框是一個Gtk.ComboBoxText對象,而不是像其他組件那樣僅僅是Gtk.ComboBox。有沒有辦法解決這個問題或解決它?沒有條目的GTK3組合框移到GTK3組合框後輸入。爲什麼?

# Department Combo 
    self.department_combo = Gtk.ComboBox.new_with_model_and_entry(self.logic.get_department_store()) 
    self.department_combo.set_entry_text_column(0) 
    self.combo_rowbox.pack_start(self.department_combo, False, False, 0) 
    self.department_combo.show() 
    # Building Combo 
    self.building_combo = Gtk.ComboBox.new_with_entry() 
    self.building_combo.set_entry_text_column(0) 
    self.combo_rowbox.pack_start(self.building_combo, False, False, 0) 
    self.building_combo.hide() 
    # Floor Combo 
    self.floor_combo = Gtk.ComboBoxText() 
    self.floor_combo.set_entry_text_column(0) 
    self.combo_rowbox.pack_start(self.floor_combo, False, False, 0) 
    self.floor_combo.hide() 
    # Printer Combo 
    self.printer_combo = Gtk.ComboBox.new_with_entry() 
    self.printer_combo.set_entry_text_column(0) 
    self.combo_rowbox.pack_start(self.printer_combo, True, True, 0) 
    self.printer_combo.hide() 

回答

1

假設self.combo_rowboxGtk.Box我建議改變所使用的pack_startself.printer_combopack_end。這意味着該小部件被添加在Box的右側,而不是左側。

或者,您也可以嘗試使用Gtk.Grid作爲您的ComboBox的容器,但它不夠靈活,但有助於獲得更可預測的結果。

+1

非常感謝!我不知道爲什麼我不考慮使用pack_end ......我剛習慣使用pack_start。再次感謝。 – TheEggSample

+0

這是一個很好的答案,雖然我不確定爲什麼'Box'會這樣做,因爲它看起來像是不想要的和意外的行爲。他們應該按照您打包的順序打包。 – oldtechaa

+0

這確實是奇怪的行爲,我試圖重現它,但沒有奏效。 OP有可能通過從原始代碼複製粘貼來創建片段,並通過這樣做來糾正他的錯誤。 (起初我以爲這可能與隱藏和顯示有關,但事實並非如此) – B8vrede