实际上,我有一个列表(fooId,fooName),我需要显示一个下拉列表,其中只显示这个列表中的fooName。但是,当我需要从用户那里获取所选项目时,我只想获取fooId,而不是fooName。在
根据文件,我目前正在做的是:
someFoo = model.getSomeFoo()
foo_list = Gtk.ListStore(int, str)
for foo in someFoo:
foo_list.append([foo[0], foor[1]])
self.cb = Gtk.ComboBox.new_with_model_and_entry(foo_list)
self.cb.set_entry_text_column(1)
正如您可以想象的那样,除了组合框显示带有下拉列表的条目之外,这些行都做得很好。我不需要这个条目,所以我尝试使用:
^{pr2}$但现在我的下拉列表是空的。在
有什么想法吗?在
我理解你的问题。您需要创建如下所示的CellRenderText:
当您使用条目创建一个组合框时,组合框将假定您的模型具有呈现器配置,因为它假定您将获得一个字符串,它可以是用户输入的或用户选定的,但最后您将关心该字符串,因此,您的模型将是“平面”的,只有一列。大多数时候都是这样,一个例外是当你使用条目来执行自动搜索时,但是有一个特殊的设置,特殊的关联对象,并且更高级。在
如果要创建一个组合框,而不创建条目,则需要定义模型和演示之间的匹配。为此,有几种类型的渲染器:CellRendererPixbuf、CellRenderText,gtk.cellRenderToggle、CellRenderSpinner等
每个渲染器都有一组属性,可以与模型中的列相匹配。在上面的示例中,我将一个cellRenderText对象放在组合框中,它的“text”属性(显示在下拉列表中的属性)映射到模型列1。在
以下是相同的示例,但使用了更多属性,在本例中,文本的颜色:
^{pr2}$相关问题 更多 >
编程相关推荐