#python #pyqt #pyqt5
Вопрос:
У меня есть ListView и перебор словаря. Я хочу отобразить номер индекса для каждой строки в представлении.
model = QtGui.QStandardItemModel()
self.listView.setModel(model)
results = {'D2_SMI_1': True, 'D2_SMI_2': False}
for key, value in results.items():
item = QStandardItem(key)
item.setCheckable(True)
item.setCheckState(value)
model.appendRow(item)
Комментарии:
1. Не могли бы вы подробно объяснить, что вы хотите получить? Где должен отображаться индекс?
2. Номер индекса должен быть помещен перед названием элемента, например .
1. D2_SMI_1 [✓]
3. Примечание: Я удалил второй вопрос, так как в этом случае вы должны создать один вопрос для каждого сообщения, поэтому вы должны создать новое сообщение для этого вопроса
4. О, конечно. Спасибо!
Ответ №1:
Возможное решение состоит в том, чтобы добавить номер через делегата:
import sys
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QListView, QStyledItemDelegate
class Delegate(QStyledItemDelegate):
def initStyleOption(self, option, index):
super().initStyleOption(option, index)
option.text = f"{index.row() 1}. {option.text}"
def main():
app = QApplication(sys.argv)
model = QStandardItemModel()
for text in ("D2_SMI_1", "D2_SMI_2", "D2_SMI_3", "D2_SMI_4"):
item = QStandardItem(text)
model.appendRow(item)
view = QListView()
view.setModel(model)
view.resize(640, 480)
view.show()
delegate = Delegate(view)
view.setItemDelegate(delegate)
ret = app.exec_()
sys.exit(ret)
if __name__ == "__main__":
main()