首页 > 解决方案 > QListWidget 项目文本未使用 If 语句返回

问题描述

我有一个 QListWidget。我在 itemClicked 上运行这个函数,这个函数也从我程序的不同部分调用。所以这个函数有可选参数cutrrentItemText。由于某种原因,我的代码无法正常工作。检查下面的例子。

def loadSomething(self,currentItemText=None):
    if not currentItemText:
        item = self.listWidget.currentItem()
        currentItemText = item.text()
    print currentItemText

#result from above code
<PySide2.QtWidgets.QListWidgetItem object at 0x7f910b112e60>

它分配项目对象而不是项目文本。这是没有 if 语句的代码,它像魅力一样工作。

def loadSomething(self,currentItemText=None):
    #if not currentItemText:
    item = self.listWidget.currentItem()
    currentItemText = item.text()
    print currentItemText

#result of this give currentItems text

我想知道我在哪里犯错。谁能告诉我这段代码有什么问题?

注意:我正在 Foundry nuke 中尝试这个。尝试自定义 python 面板。

更新: 在我的主小部件初始化中,我有这个来连接 itemClicked 事件

self.listWidget.itemClicked.connect( self.loadSomething )

解决:

我刚刚意识到,itemClicked 事件在回调时发送当前项目对象。所以第一个参数应该是项目,

def loadSomething(self,item,currentItemText=None) 

上述改变奏效

标签: pythonpyside2nuke

解决方案


试试这段代码(我在 Catalina 上的 NukeX 12.0v3 中测试过):

from PySide2 import QtWidgets, QtGui
import nuke

def loadSomething(currentItemText=None):
    if not currentItemText:
        item = QListWidget.currentItem()
        currentItemText = item.text()
    print currentItemText

loadSomething(currentItemText="Some")

在此处输入图像描述


推荐阅读