itemclicked 中的错误是啥?

Posted

技术标签:

【中文标题】itemclicked 中的错误是啥?【英文标题】:what is the error in the itemclicked?itemclicked 中的错误是什么? 【发布时间】:2018-03-24 15:30:13 【问题描述】:

我有一个 python,其中包含一个列表,用于处理所选文件夹中现有 PDF 文件的路径。

我想要的是让系统在用户单击项目时在控制台中打印所选项目。

所以它必须连接到 itemclick 事件

我将不胜感激。

系统显示此异常:

此错误发生在“NoneType”对象没有属性“文本”

这就是我试图做到的方式: self.listWidgetPDFlist.itemClicked....如何继续?

创建一个空列表

fileList=[]

遍历所选文件夹并将匹配的项目添加到 widgetList

for root,dirs,files in os.walk(directory):
            for filename in files:
                if filename.endswith('.pdf'):
                    t=os.path.join(directory,filename)
                    print(t)
                    #fileList.extend(t)
                    fileList.append(t)

        # add the list into the  listWidgetPDFlist          
        self.listWidgetPDFlist.addItems(fileList)

选择一个项目后,系统会在控制台中打印当前项目

self.listWidgetPDFlist.itemClicked(print(self.listWidgetPDFlist.currentItem().text()))

问题出在上面的代码行

【问题讨论】:

【参考方案1】:

点击的项目是一个信号,必须连接到功能。

self.listWidgetPDFlist.itemClicked.connect(lambda: print(self.listWidgetPDFlist.currentItem().text()))

上面的行使用 lambda 语句在一行代码中打印所选项目。这适用于您在此处尝试执行的非常简单的事情,但您也可以将其连接到方法以执行更多操作。

    self.listWidgetPDFlist.itemClicked.connect(self.print_item)

def print_item(self):
    print(self.listWidgetPDFlist.currentItem().text())
    # handle other items here

当连接到一个方法时,当连接到信号时,你必须在方法名称上去掉括号。

【讨论】:

你的答案完美无瑕.....但我尝试添加一个代码,将所选项目添加到新列表但没有工作它显示这些错误 File "C:\Users \test\Documents\Python_Projects\final_project\myPDFviewer.py”,第 126 行,在 sys.exit(app.exec_()) 文件“C:\Users\test\Documents\Python_Projects\final_project\myPDFviewer.py”中,第 36 行,在 print_item self.listWidgetPDFlist.currentItem(self.listWidget.addItem()) builtins.TypeError: 参数不匹配任何重载调用: addItem(self, QListWidgetItem): 没有足够的参数 addItem(self, str): not足够的论据 您似乎在如何使用 PyQt 函数方面遇到了麻烦。您正在为不需要参数的方法提供参数,而不是为需要参数的方法提供参数。我想你可能在这里寻找的是:self.listWidget.addItem(self.listWidgetPDFlist.currentItem().text()) 感谢您的帮助。你能帮我解决一个不同的问题吗?我正在尝试使用 python 突出显示文本,但还没有任何效果

以上是关于itemclicked 中的错误是啥?的主要内容,如果未能解决你的问题,请参考以下文章

NavigationDrawer 在 itemclick 处不执行任何操作

Qt QTreeView clicked函数如何区分左右键

Annotations Recycler View ItemClick

如何在 RecyclerView 的 CardView 中实现对 Item Click 的操作以显示结果

ExtJS Grid 无法识别取消选择行

Ext.tree.Panel、itemclick、getTreeStore() 在 5.x 中找不到,但在 4.x 中有效