代码之家  ›  专栏  ›  技术社区  ›  Mike C.

Pyqt5列表小部件。单击ListWidget上的项目,但将另一个项目传递给函数

  •  0
  • Mike C.  · 技术社区  · 5 年前

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

    self.listWidget_entries.itemClicked.connect(self.get_memo_details)
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   S. Nick    5 年前

    可能是这样的:

    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_()) 
    

    enter image description here