我正在使用Glade为gimp插件构建一个“伪智能”GUI。 GUI的主要部分有两个框架,并使用“reparent”方法导入内容。主要目的是使第二帧的内容由在第一帧中作出的选择确定。 (最终,目的是将此GUI导入为"笔记本的标签页的内容")
首先,我创建了一个简单的窗口,包含一个“RadioButtonBox”和一个“ComboBox”,它使用以下命令填充:
# create the cell renderer
self.cell = gtk.CellRendererText()
#populate the default choice into the Selection combobox
self.SelectionBox = self.builder.get_object("SelectionBox")
self.SelectionBox.set_model(self.EditCommands)
self.SelectionBox.pack_start(self.cell, True)
self.SelectionBox.add_attribute(self.cell, 'text', 1)
self.SelectionBox.set_active(0)
# End: populate the selection combo box section
这很有效,我可以成功地“导入”和“重新显示”简单的GUI,作为更大,更复杂的GUI的第一帧,没有任何问题。但是,随着设计的进展,将第一帧的代码作为主GUI的一个组成部分变得更加方便,这就是我的问题开始的地方。
我在较大的GUI的第一帧中复制了简单GUI的内容,并从简单的GUI“ init ”功能中复制/粘贴代码。换句话说,一切都是相同的。
不幸的是,当我运行代码时,我收到以下错误:
C:\Documents and Settings\anonymous\Desktop\Glade-tutorial\BatchEditMain\BatchEditLibrary\Tab.py:46: GtkWarning: gtk_entry_set_text: assertion `text != NULL' failed
self.SelectionBox.set_active(0)
有人可以解释一下问题是什么吗?
提前致谢
欧文
答案 0 :(得分:0)
GTK警告说,使用gtk_entry.set_text()
而不是某些文字调用某处None
。这发生在对self.SelectionBox.set_active(0)
答案 1 :(得分:0)
这有点像挖墓,但我今天偶然发现了同一个问题,这是google显示的第一篇文章...
经过进一步的研究,我发现了这个问题:
How create a combobox on Python with GTK3? 作者似乎有相同的错误。
在他和我的案子中似乎可以解决这个问题的方法很简单:
combobox.set_entry_text_column(0)
重要的是它必须在set_active(0)
前面!
因此,在您的情况下,它将是:
...
self.SelectionBox.add_attribute(self.cell, 'text', 1)
self.SelectionBox.set_entry_text_column(0)
self.SelectionBox.set_active(0)
...
PS:如果要应用“前景”之类的属性,请放心,如果将其设置为befor,它们似乎会被set_entry_text_column(0)
覆盖。
例如:如果模型中的项目看起来像这样:
["TEXT_YOU_WANT_TO_DISPLAY","TEXT_FOREGROUNDCOLOR_AS_MARKUP_COLOR"]
对前景色的更改可以通过以下方式应用:
...
self.SelectionBox.add_attribute(self.cell, 'text', 0)
self.SelectionBox.set_entry_text_column(0)
self.SelectionBox.add_attribute(self.cell, 'foreground', 1)
self.SelectionBox.set_active(0)
...