如何将listWidget中的选定项作为参数发送到另一个函数

Jac*_*ack 3 python qt4 pyqt4

每当我单击列表小部件中的任何函数时,它都会运行特定的函数.现在我想将项目本身作为该函数的参数发送.这是代码:

QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.test)

def test(self):
    print 'hello'
Run Code Online (Sandbox Code Playgroud)

相反,我想:

def test(self,item):
        print item
Run Code Online (Sandbox Code Playgroud)

Gar*_*hes 12

这应该已经有效 - 当itemClicked它被发射时它会将被点击QListWidgetItem的参数作为参数发送.您只需要编辑您的test函数以接受额外的参数,这将是您的QListWidgetItem.

from PyQt4.QtCore import QCoreApplication, Qt
from PyQt4.QtGui import QListWidget, QListWidgetItem, QApplication

import sys

class MyList(QListWidget):
    def __init__(self):
        QListWidget.__init__(self)
        self.add_items()
        self.itemClicked.connect(self.item_click)

    def add_items(self):
        for item_text in ['item1', 'item2', 'item3']:
            item = QListWidgetItem(item_text)
            self.addItem(item)

    def item_click(self, item):
        print item, str(item.text())

if __name__ == '__main__':
    app = QApplication([])
    myList = MyList()
    myList.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,您将看到一个包含三个项目的QListWidget.单击某个项目时,该项目以及项目的文本将打印到控制台.