我遇到了ComboBoxEntry
的问题以及填充它的功能。
这是GUI上的__init__
代码。
self.combobox_category = self.builder.get_object("combobox_category")
self.combobox_category.set_entry_text_column(1)
INIT_COMBOBOX_category(self)
这是填充ComboBoxEntry
的功能。
def INIT_COMBOBOX_category(self):
self.list_category = Gtk.ListStore(int,str)
self.list_category.clear()
self.list_category.append([0,"< List all the categories >"])
self.list_category.append([1,"No specified"])
#...No relevant code...
self.combobox_category.set_model(self.list_category)
self.cell = Gtk.CellRendererText()
self.combobox_category.pack_start(self.cell, True)
self.combobox_category.add_attribute(self.cell, 'text', 1)
self.combobox_category.set_active(1)
问题在于,当我启动GUI时,combobox_category
具有&#34;重复的值&#34;
(仅在选择值时,不在ComboBoxEntry
中):
< List all the categories > < List all the categories >
No specified No specified
然后,当我需要再次使用函数INIT_COMBOBOX_category(self)
时,值会增加三倍等。
我认为
self.list_category.clear()
无效。
同样奇怪的是,在Glade中,我选择了ComboBoxEntry
作为可编辑的&#34;我不能写上它。我也试过&#34;覆盖模式&#34;它还没有用!
答案 0 :(得分:0)
我找到了一个解决方案,它包括在python而不是glade中创建ComboBoxEntry,在 init 函数中创建ComboBoxEntry,在INIT_COMBOBOX_category中修改ListStore。
init 代码如下:
self.list_category=Gtk.ListStore(int,str)
self.category_combo=Gtk.ComboBox.new_with_model_and_entry(self.list_category)
self.category_combo.show()
self.box_category_to_install.add(self.category_combo)
self.category_combo.set_entry_text_column(1)
INIT_COMBOBOX_category(self)
(我在林间空地添加了一个方框,名为box_category_to_install以放置ComboBoxEntry)
和
def INIT_COMBOBOX_category(self):
self.list_category.clear()
self.list_category.append([0,"< List all the categories >"])
self.list_category.append([1,"No specified"])
etc...