2016-05-13 6 views
1

Also habe ich diese Anwendung für die Arbeit entwickelt, die es dem Benutzer im Wesentlichen ermöglicht, ihre Abteilung, Gebäude und Etage auszuwählen. Dadurch wird ein Grundriss des ausgewählten Standorts angezeigt, an dem verschiedene Drucker in diesem Grundriss ausgewählt werden können. Es öffnet sich auch eine andere Combobox, wo sie den Drucker auswählen können. Ich habe die Comboboxen so erstellt, wie sie angezeigt werden sollen: Abteilung, Gebäude, Boden, Drucker. Sie zeigen dies jedoch nicht an. So zeigen sie stattdessen an: ComboBox Order. Ich nehme an, das ist, weil die Boden-Combobox ein Gtk.ComboBoxText-Objekt ist, anstatt nur Gtk.ComboBox wie der Rest von ihnen. Gibt es eine Möglichkeit, dies zu beheben oder zu umgehen?GTK3 Combobox ohne Eintrag nach GTK3 Combobox mit Eintrag verschieben. Warum?

# 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() 

Antwort

1

self.combo_rowbox Unter der Annahme Gtk.Box würde ich vorschlagen, die pack_start für self.printer_combo zu pack_end verwendet zu verändern. Dies bedeutet, dass das Widget auf der rechten Seite der Box anstelle der linken Seite hinzugefügt wird.

Alternativ können Sie auch versuchen, eine Gtk.Grid als Container für Ihre ComboBox 's zu verwenden, es ist weniger flexibel, aber hilft, ein vorhersehbareres Ergebnis zu erhalten.

+1

Vielen Dank! Ich weiß nicht, warum ich nicht daran gedacht habe, pack_end zu benutzen ... ich schätze, ich war nur daran gewöhnt, pack_start zu benutzen. Danke noch einmal. – TheEggSample

+0

Dies ist eine gute Antwort, obwohl ich mir nicht sicher bin, warum die 'Box' das tun würde, da es sich um unerwünschtes und unerwartetes Verhalten handelt. Sie sollten in der Reihenfolge verpackt werden, in der Sie sie verpacken. – oldtechaa

+0

Es ist in der Tat seltsames Verhalten, ich habe versucht, es zu reproduzieren, aber das hat nicht funktioniert. Es ist möglich, dass OP das Snippet durch Kopieren aus dem ursprünglichen Code erstellt und seinen Fehler dadurch korrigiert hat. (Zuerst dachte ich, es könnte mit dem Verstecken und Zeigen zu tun haben, aber das ist nicht der Fall) – B8vrede