2012-03-08 77 views
0

我正在使用python插件。我有一個QListWidget作爲fieldsList _2在我的form.I列出一些項目作爲查詢result.My代碼如下:Python -QListWidget.TypeError:range()整數結束參數預計

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從上市複製entries.But當我嘗試運行上面的代碼,它提供了錯誤:

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

要解決給出的錯誤信息,請嘗試從

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

更改爲

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

計數() - 因爲您剛剛添加的元素被添加到列表的末尾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 
+0

@的Kristofer - yes..but兩個相同的項目removed..i想繼續其中之一... – poonam 2012-03-08 07:47:50

+0

@poonam:在答案中添加了處理該問題的零件。 – Kristofer 2012-03-08 08:18:14

+0

@ Kristofer-ok,但在Qt :: MatchExactly中出現語法錯誤...並且count() - 1不會將單個項添加到列表中... – poonam 2012-03-08 09:51:11