Ich habe ein Problem festzustellen, ob die Checkboxen, die dynamisch erstellt werden, vom Benutzer in einer einfachen GUI, die ich erstellt habe, aktiviert oder deaktiviert sind.Zugriff auf Eigenschaft dynamisch erstellter QStandardItems in PyQt5
Ich habe den entsprechenden Code angepasst und eingefügt es unten. Obwohl es einfach sein kann, nur 4 QStandardItems zu erstellen und zu benennen, habe ich es mit vielen Listen zu tun, die viele verschiedene Elemente enthalten, die sich ziemlich viel ändern, so dass es nicht wirklich machbar ist, sie selbst zu erstellen.
Jede Hilfe, die herausfindet, wie man auf diese Eigenschaften zugreift, würde sehr geschätzt werden.
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Splash(QWidget):
def __init__(self):
super().__init__()
# imagine this is a very long list...
self.seasons = ['summer','autumn','winter','spring']
self.initUI()
def initUI(self):
layout = QVBoxLayout()
list = QListView()
model = QStandardItemModel()
list.setModel(model)
printbtn = QPushButton('print values')
printbtn.clicked.connect(self.print_action)
for season in self.seasons:
item = QStandardItem(season)
item.setCheckable(True)
model.appendRow(item)
model.dataChanged.connect(lambda: self.print_action(item.text()))
layout.addWidget(printbtn)
layout.addWidget(list)
self.setLayout(layout)
self.show()
def print_action(self, item):
print('changed', item)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = Splash()
sys.exit(app.exec_())
Kurz gesagt - ich kann erkennen, wenn ein Element überprüft wurde model.dataChanged verwenden und dass zu einer Funktion verbinden, aber es kann zwischen den Jahreszeiten nicht unterscheiden.
Brilliant, genau wonach ich suche. – yvesva