如何将listWidget中选定的项作为参数传递给另一个函数

4 投票
1 回答
17985 浏览
提问于 2025-04-17 13:07

每当我在列表小部件中点击任何一个功能时,它就会运行一个特定的函数。现在我想把点击的那个项目本身作为参数传递给这个函数。以下是我的代码:

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

def test(self):
    print 'hello'

但我想要的是:

def test(self,item):
        print item

1 个回答

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。当你点击某个项目时,那个项目和它的文本会被打印到控制台上。

撰写回答