你确定item有clicked方法嘛?
时间: 2024-03-22 20:40:14 浏览: 46
非常抱歉,我犯了一个错误。QListWidgetItem没有`clicked()`方法,因此我们不能像我之前描述的那样为每个item单独连接槽函数。
相反,我们可以使用`itemClicked`信号和`currentItem()`方法来获取当前被单击的item,并根据其文本内容调用相应的槽函数。
以下是一个示例代码,展示如何为每个item设置不同的点击响应:
```python
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem
app = QApplication([])
list_widget = QListWidget()
# 添加项目
item1 = QListWidgetItem("Item 1")
item2 = QListWidgetItem("Item 2")
item3 = QListWidgetItem("Item 3")
list_widget.addItem(item1)
list_widget.addItem(item2)
list_widget.addItem(item3)
# 定义槽函数
def on_item_clicked(item):
text = item.text()
if text == "Item 1":
print("Item 1 clicked")
elif text == "Item 2":
print("Item 2 clicked")
elif text == "Item 3":
print("Item 3 clicked")
# 连接itemClicked信号和槽函数
list_widget.itemClicked.connect(lambda: on_item_clicked(list_widget.currentItem()))
list_widget.show()
app.exec_()
```
在上面的示例中,我们定义了一个名为`on_item_clicked`的槽函数,它会在每个项目被单击时被调用,并根据当前被单击的item的文本内容调用相应的响应函数。我们将`itemClicked`信号连接到一个匿名函数中,该匿名函数会调用我们定义的槽函数,并将当前被单击的item作为参数传递给槽函数。这样,每次单击不同的item时,都会调用`on_item_clicked`函数来执行相应的响应。
阅读全文