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

时间:2012-02-16 14:41:22

标签: python qt4 pyqt4

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

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

def test(self):
    print 'hello'

相反,我想:

def test(self,item):
        print item

1 个答案:

答案 0 :(得分: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_())

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