首页 > 解决方案 > PyQt5 列表小部件。单击 listWidget 上的一个项目,但将另一个项目传递给函数

问题描述

我有一个填充了日期的 ListWidget。我还想包含一个不显示的隐藏值(mysql 行 id),但是当我单击一个日期时,我想将隐藏的行 id 传递给函数。这样的事情可能吗?我目前正在使用以下方法来调用我的函数:

self.listWidget_entries.itemClicked.connect(self.get_memo_details)

标签: pythonpyqt5

解决方案


它可能看起来像这样:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class MyWin(QMainWindow):
    def __init__(self):
        super().__init__()  

        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)      

        self.rowId = 777                                                         # <---     

        self.listWidget = QListWidget()
        self.listWidget.itemClicked.connect(
                lambda it, rowId=self.rowId : self.listWidgetClicked(it, rowId)) # <---

        self.layout = QVBoxLayout(centralWidget)

        self.createListWidget()

    def createListWidget(self):
        for it in ["item1", "item2", "item3"]:
            self.listWidget.addItem(QListWidgetItem(it))
            self.layout.addWidget(self.listWidget)  

    @pyqtSlot() 
    def listWidgetClicked(self, item, rowId ):                                   # <---
        print('click -> {}, rowId=`{}`'.format(item.text(), rowId))


if __name__=="__main__": 
    import sys 
    app = QApplication(sys.argv)    
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_()) 

在此处输入图像描述


推荐阅读