Как получить все элементы, существующие в QlistWidget в PyQt5
У меня есть функция, которая отображает список файлов, существующих в выбранном каталоге, а затем пользователь вводит искомое слово, где программа считывает эти файлы в фоновом режиме, чтобы найти подходящее слово, в конце оно переопределяет существующий список, просто отображая файлы, содержащие соответствующее слово.
проблема в том, что в то время как цикл система отображает эту ошибку:
в то время как индекс
builtins.TypeError: объект типа 'int' не имеет len()
код:
def listFiles(self):
readedFileList = []
index = 0
while index < len(self.listWidgetPDFlist.count()):
readedFileList.append(self.listWidgetPDFlist.item(index))
print(readedFileList)
try:
for file in readedFileList:
with open(file) as lstf:
filesReaded = lstf.read()
print(filesReaded)
return(filesReaded)
except Exception as e:
print("the selected file is not readble because : {0}".format(e))
1 ответ
Решение
count()
возвращает количество элементов, так что это целое число, функция len(
) применяется только к итерируемым, а не целым числам, поэтому вы получите эту ошибку, плюс она не нужна. Вы должны сделать следующее:
def listFiles(self):
readedFileList = [self.listWidgetPDFlist.item(i).text() for i in range(self.listWidgetPDFlist.count())]
try:
for file in readedFileList:
with open(file) as lstf:
filesReaded = lstf.read()
print(filesReaded)
# return(filesReaded)
except Exception as e:
print("the selected file is not readble because : {0}".format(e))
Примечание: не используйте return, вы закончите цикл в первой итерации.