Python GTK:所以,我有3个组合框,员工可以选择他们的部门,建筑和楼层。最初我在部门组合框改变了它,它将创建一个新的组合框,其中包含属于该部门的所有建筑物的模型,以及类似于地板组合框。这样做的问题是它不会让用户返回并更改他们的选择。理想情况下,我想要3个组合框,在选择部门后,它会将新模型加载到已创建的组合框中并更新它。我正在使用树模型,因为我还有另一个值,我正在处理以对正在创建的模型进行排序。
self.vbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6)
# Department
self.department_combo = Gtk.ComboBox.new_with_model_and_entry(self.logic.get_department_store())
self.department_combo.connect("changed", self.on_department_combo_changed)
self.department_combo.set_entry_text_column(0)
self.vbox.pack_start(self.department_combo, False, False, 0)
self.department_combo.show()
self.vbox.show()
# Building
self.building_combo = Gtk.ComboBox.new_with_entry()
self.building_combo.connect("changed", self.on_building_combo_changed)
self.building_combo.set_entry_text_column(0)
self.vbox.pack_start(self.building_combo, False, False, 0)
self.building_combo.show()
#Floor
self.floor_combo = Gtk.ComboBox.new_with_entry()
self.floor_combo.connect("changed", self.on_floor_combo_changed)
self.floor_combo.set_entry_text_column(0)
self.vbox.pack_start(self.floor_combo, False, False, 0)
self.floor_combo.show()
def on_department_combo_changed(self, combo):
tree_iter = combo.get_active_iter()
if tree_iter != None:
model = combo.get_model()
name, row_id = model[tree_iter][:2]
print name
print row_id
print("Selected: ID=%d, name=%s" % (row_id, name))
self.selectedDepartment = name
self.building_combo = Gtk.ComboBox.new_with_model_and_entry(self.logic.get_building_store(self.selectedDepartment))
self.building_combo.show()
self.vbox.pack_start(self.building_combo, False, False, 0)
return
选择合适的部门没有问题,我只是无法使用新模型更新Building组合框。我搜索了相当多的文档,可能只是失明了。有什么想法吗?