QTreeWidget中的Python查询结果

时间:2012-07-06 07:33:34

标签: python pyqt4 qtreewidget

我正在使用python插件。我使用 PyQt4 设计器。 我想将查询结果列入 QTreeWidget 。 我的代码如下:

c = self.db.con.cursor()
self.db._exec_sql(c, "select est from bio")
for row in c.fetchall():
    item_value=unicode(row[0])
    top_node1 = QTreeWidgetItem(item_value)
    self.treeWidget.insertTopLevelItem(0, top_node1)

查询将值返回为:

enter image description here

但是当我使用上面的代码将这些值列入 QTreeWidget 时,它显示如下:

enter image description here

只显示第一个字符。如果我将'0'更改为self.treeWidget.insertTopLevelItem(0,top_node1)中的其他数字,则 QTreeWidget 中不会显示任何内容。

我该怎么做???? 感谢名单。

2 个答案:

答案 0 :(得分:2)

如果您查看documentation for a QTreeWidgetItem,您会看到有许多可能的构造函数用于创建实例。虽然看起来你似乎没有一种方式可以给你带来理想的结果。与您提供的签名最接近的匹配是:

QTreeWidgetItem ( const QStringList & strings, int type = Type )

这可能正在做的是取你的字符串(我假设row[0]是一个字符串,因为我不知道你正在使用哪些驱动程序)并将其应用为序列,这将满足{的要求{1}}。因此,您获得的是使用字符串值的每个字母填充项目的多个列。如果这是您想要的,那么您需要告诉您的小部件显示更多列:QStringList。但这不是你想要的,我相信。

你应该尝试的更多可能是创建一个新项目,然后将值添加到所需的列:

self.treeWidget.setColumnCount(10)

您可以使用不带参数的默认构造函数,将第一列的文本值设置为数据库记录字段值,然后将该项添加到树中。您还可以建立项目列表并立即添加:

item = QTreeWidgetItem()
item.setText(0, unicode(row[0]))
self.treeWidget.insertTopLevelItem(0, item)

答案 1 :(得分:1)

你的第一个方法可以纠正,只需在widgetitem中添加一个列表,而不是像这样的字符串:

top_node1 = QTreeWidgetItem([item_value])