目前,我在一个继承QtGui.QListWidget的类中使用以下while循环来迭代所有项目:
i = 0
while i < self.count():
item = self.item(i)
i += 1
我希望我能使用:
for item in self.items():
但是items()方法需要一个QMimeData对象,我不知道如何构造它来返回所有项。除了我上面的while循环外,是否有更简洁的方法?
目前,我在一个继承QtGui.QListWidget的类中使用以下while循环来迭代所有项目:
i = 0
while i < self.count():
item = self.item(i)
i += 1
我希望我能使用:
for item in self.items():
但是items()方法需要一个QMimeData对象,我不知道如何构造它来返回所有项。除了我上面的while循环外,是否有更简洁的方法?
我也不知道 MIME 类型是什么,而且我也找不到方便的方法。但你可以编写一个简单的方法像这样完成:
def iterAllItems(self):
for i in range(self.count()):
yield self.item(i)
仅仅想补充我的两分钱,当我正在寻找这个:
itemsTextList = [str(listWidget.item(i).text()) for i in range(listWidget.count())]
我知道这个可能有点老了,但我刚发现在 QListWidget 中有一个函数叫findItems(text, Qt.MatchFlags)。所以,要遍历所有的项:
#listWidget is a QListWidget full of items
all_items = listWidget.findItems('', QtCore.Qt.MatchRegExp)
for item in all_items:
print item
然后您可以根据需要对该项进行任何操作 =)
items = []
for index in xrange(self.listWidget.count()):
items.append(self.listWidget.item(index))
对于那些寻找有关PyQt5的同类信息的其他用户,需要注意这里略有不同。
正如用户Pythonic在上面提到的PyQt4一样,您仍然可以直接使用索引来访问一个项目:
item_at_index_n = list_widget.item(n)
all_items = list_widget.findItems('*', PyQt5.Qt.MatchWildcard)
items = []
for index in range(self.listWidget.count()):
items.append(self.listWidget.item(index))
for item in items:
print(item.text())