如何在PyQt5中的QlistWidget中获取所有项目

时间:2018-04-04 08:11:56

标签: python pyqt pyqt5 qlistwidget qlistwidgetitem

我有一个显示所选目录中存在的文件列表的功能,然后用户输入一个搜索到的单词,程序在后台读取这些文件以找到匹配的单词,最后它覆盖现有的列表只显示包含匹配单词的文件。

问题在于 while循环 系统显示此错误:

  

而索引< LEN(self.listWidgetPDFlist.count()):

     

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 个答案:

答案 0 :(得分:0)

count()返回项目数,因此它是一个整数,函数len()仅适用于iterable,而不是整数,所以你得到了这个错误,而且没有必要。你必须做到以下几点:

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,你将在第一次迭代中完成循环。