我正在使用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
答案 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