Python -QListWidget.TypeError:range()期望的整数结束参数

时间:2012-03-08 07:33:12

标签: python pyqt4

我正在使用python插件。我的表单上有一个QListWidget为 fieldsList _2。我列出了一些项目,作为查询结果。我的代码如下:

c = self.db.con.cursor()
self.db._exec_sql(c, "SELECT desc,survey from bio")
            for row in c.fetchall():
                    acoustic=unicode(row[0])
                    if (acoustic[0:3]=="ACO" ):

                            surv=unicode(row[1])
                            self.fieldsList_2.addItem(unicode(row[1]))

                            for i in range(self.fieldsList_2.count):
                                    if self.fieldsList_2.item( i ).text() == surv:
                                            self.fieldsList_2.takeItem( i )

我想阻止QListWidget fieldsList _2列出重复的条目。但是当我尝试运行上面的代码时,它会出错:

  for i in range(self.fieldsList_2.count):
TypeError: range() integer end argument expected, got builtin_function_or_method.

我尝试了范围(1,self.fieldsList_2.count) ..但没有成功。如果存在3个相同的项目,那么我想将其中一个保留为 Qlistwidget

1 个答案:

答案 0 :(得分:1)

要修复给出的错误消息,请尝试从

更改
for i in range(self.fieldsList_2.count):

for i in range(self.fieldsList_2.count()-1):

count() - 1,因为您刚添加的元素已添加到列表的末尾,如果您想保留一个,则应忽略最后一个。

另一种方法是只在没有重复的情况下添加项目,这里有一些伪代码:

duplicates = self.fieldlist_2.findItems(surv, QtCore.Qt.MatchExactly)
if duplicates.size() == 0:
    self.fieldsList_2.addItem(unicode(row[1]))
//skip the loop part since it's not necessary using this alternative