[PyQt5调用函数,单击QListWidgetItem

问题描述 投票:0回答:1

如何确保仅当单击QListWidgetItem“项目1”而不是单击QListWidgetItem“项目2”时才调用do_something()函数?

在下面的实现中,每次单击任意一项时,都会调用do_something()函数。

from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QHBoxLayout, QListWidgetItem
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.list_widget = QListWidget()
        self.layout = QHBoxLayout()
        self.layout.addWidget(self.list_widget)
        self.list_widget.insertItem(1, QListWidgetItem("Item 1"))
        self.list_widget.insertItem(2, QListWidgetItem("Item 2"))
        self.list_widget.itemClicked.connect(self.do_something)
        self.setLayout(self.layout)
        self.show()

    def do_something(self):
        print("It was clicked on item 1")


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())
python pyqt pyqt5 qlistwidget qlistwidgetitem
1个回答
0
投票

解决方案是获取所按下项目的行并验证其为0:

from PyQt5.QtCore import pyqtSlot

# ...

@pyqtSlot("QListWidgetItem*")
def do_something(self, item):
    if self.list_widget.row(item) == 0:
        print("It was clicked on item 1")
© www.soinside.com 2019 - 2024. All rights reserved.