创建后更改GTK ComboBox模型

时间:2016-05-09 16:15:46

标签: python combobox gtk pygobject

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组合框。我搜索了相当多的文档,可能只是失明了。有什么想法吗?

0 个答案:

没有答案