pygtk cellrenderertoggle 未被选中

pygtk cellrenderertoggle is not checked

我有以下代码:

self.db='checks.db'
self.con = lite.connect(self.db)
self.cur = self.con.cursor()
self.q_oblig_initial='SELECT data_plirotees.rowid as rowid,recdate,bank,amount,dueto,gto,plirstatus FROM data_plirotees WHERE plirstatus=0 ORDER BY dueto ASC'
self.store_oblig = gtk.ListStore(int,str,str,str,str,str,bool)
self.cur.execute(q_oblig)
self.data_oblig=self.cur.fetchall()
for value in self.data_oblig:
    if value[6]==0:
        plir=False
    elif value[6]==1:
        plir=True     
self.store_oblig.append([value[0],datetime.datetime.fromtimestamp(int(value[1])).strftime('%d/%m/%Y'),value[2],"%.2f" %(value[3]),datetime.datetime.fromtimestamp(int(value[4])).strftime('%d/%m/%Y'),value[5],plir])`

从 sqlite 数据库获取数据并将其放入列表存储,

rendererToggle.connect("toggled", self.on_cell_toggled)
column_toggle = gtk.TreeViewColumn("Καλύφθηκε", rendererToggle, active=1)
column_toggle.set_fixed_width(10)
treeView_oblig.append_column(column_toggle)

必须在 true 应显示已选中 toggle/checkbox 且 false 应未选中的列中显示。

不幸的是,这并没有发生。 复选框不需要处于活动状态(我不希望它能够切换),但通过单击树视图行,它会打开一个新的 window(相应地选中或不选中复选框)。据我所知,true/false 值包含在某处,但没有在视觉上显示。

谁能告诉我哪里错了?

我没有 post 整个程序,因为它太大而且可能会误导...

self.store_oblig = gtk.ListStore(int,str,str,str,str,str,bool)

这一行创建了一个 GtkListStore,其中每一列都是不同的类型。列从左到右编号,从 0:

开始
self.store_oblig = gtk.ListStore(int,str,str,str,str,str,bool)
                   column number 0   1   2   3   4   5   6

你用这个创建你的 GtkTreeViewColumn:

column_toggle = gtk.TreeViewColumn("Καλύφθηκε", rendererToggle, active=1)

这表示该列的单元格渲染器应该从模型的第 1 列(在本例中为列表存储)中获取其 active 属性 的值。而 active 属性 期望 bool.

但是如果您回头看上面,第 1 列不是 bool,而是 string!所以你真正想要的是 active=6,而不是 active=1。 (另一方面,您添加到列表存储的代码似乎是正确的。)

这就是警告 Warning: unable to set property 'active' of type 'gboolean' from value of type 'gchararray' gtk.main() 试图告诉您的内容; gchararray 是 GLib 的字符串内部名称之一。