python - 单击 QListWidgetItem 时的 PyQt5 调用函数
问题描述
如何确保仅在单击 QListWidgetItem "Item 1" 而不是 QListWidgetItem "Item 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())
解决方案
解决方法是获取按下项所在的行,并验证为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")
推荐阅读
- python - 如何阻止 plt.show() 使界面非交互
- javascript - 仅将数字四舍五入为 2.5 的因数
- algorithm - Scala分割折线的通用功能方法
- html - 图像按钮开始闪烁
- visual-studio-code - tslint:禁用在 vscode 中不起作用
- visual-studio - 未流向最终位置的已发布文件的修改
- javascript - 过滤 getJSON 以排除大多数结果
- ios - 非封闭访问时变量的值发生变化
- python - Django Rest Framework RelatedField 无法返回 dict 对象
- nuxeo - Nuxeo web-ui 和 jsf 接口同时进行