在 QListWidget 中一次获取一项
Get one item at a time in QListWidget
我有一个 QListWidget 和一个 QPushButton。
假设我的 QListWidget 包含如下:
- 苹果
- 梨
- 香蕉
- 桃色
- 熊
我试图实现每个 QPushButton 单击都会 return 列表中单个项目的名称。
例如。
- 第一次点击会 return 我 'apple',
- 第二次点击会 return 我 'pear',
- ...
- 第五次点击 return 我 'bear'
- 并且在第六次点击时,它应该再次 return 我 'apple' 而不是结束迭代
目前我只能return QListWiget 中的所有 5 个项目,使用此代码:
items = [obj.text() for obj in my_list.findItems(
'', QtCore.Qt.MatchContains)
]
我尝试使用 for item in items:...
,每当我点击按钮时,它仍然会 return 我所有 5 个项目。
我该如何实现?
你必须创建一个每次点击都会递增的循环计数器,并使用item()
表示returns想要的元素,然后我们使用text()
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget, QApplication, QListWidgetItem
import sys
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
layout = QVBoxLayout(self)
btn = QPushButton("btn", self)
btn.clicked.connect(self.onClicked)
layout.addWidget(btn)
self.listWidget = QListWidget(self)
layout.addWidget(self.listWidget)
elements = ['apple', 'pear', 'banana', 'peach', 'bear']
for element in elements:
self.listWidget.addItem(element)
self.counter = 0
def onClicked(self):
print(self.listWidget.item(self.counter).text())
self.counter = (self.counter +1) % self.listWidget.count()
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
输出:
apple
pear
banana
peach
bear
apple
pear
banana
peach
bear
apple
我有一个 QListWidget 和一个 QPushButton。 假设我的 QListWidget 包含如下:
- 苹果
- 梨
- 香蕉
- 桃色
- 熊
我试图实现每个 QPushButton 单击都会 return 列表中单个项目的名称。 例如。
- 第一次点击会 return 我 'apple',
- 第二次点击会 return 我 'pear',
- ...
- 第五次点击 return 我 'bear'
- 并且在第六次点击时,它应该再次 return 我 'apple' 而不是结束迭代
目前我只能return QListWiget 中的所有 5 个项目,使用此代码:
items = [obj.text() for obj in my_list.findItems(
'', QtCore.Qt.MatchContains)
]
我尝试使用 for item in items:...
,每当我点击按钮时,它仍然会 return 我所有 5 个项目。
我该如何实现?
你必须创建一个每次点击都会递增的循环计数器,并使用item()
表示returns想要的元素,然后我们使用text()
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget, QApplication, QListWidgetItem
import sys
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
layout = QVBoxLayout(self)
btn = QPushButton("btn", self)
btn.clicked.connect(self.onClicked)
layout.addWidget(btn)
self.listWidget = QListWidget(self)
layout.addWidget(self.listWidget)
elements = ['apple', 'pear', 'banana', 'peach', 'bear']
for element in elements:
self.listWidget.addItem(element)
self.counter = 0
def onClicked(self):
print(self.listWidget.item(self.counter).text())
self.counter = (self.counter +1) % self.listWidget.count()
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
输出:
apple
pear
banana
peach
bear
apple
pear
banana
peach
bear
apple