PyQt4: Databinding?
-
09-09-2019 - |
Domanda
Venendo dal mondo .NET verso Python e PyQt4. Chiedevo se qualcuno ha familiarità con qualsiasi funzionalità che mi permettesse di collegare dati a oggetti Qt? Per esempio (usando sqlalchemy per i dati):
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
E 'possibile una cosa del genere?
Soluzione
Una possibilità sarebbe una funzione che restituisce un oggetto lista (o tupla) da una query, e quindi utilizzare che per aggiornare il QListWidget. Ricordate che i QListWidget negozi QListStrings. La vostra funzione di aggiornamento potrebbe essere simile a questo:
def updateQListWidget(qlistwidget, values):
""" Updates a QListWidget object with a list of values
ARGS:
qlistwidget - QListWidget object
values - list of values to add to list widget
"""
qlistwidget.clear()
qlist = QtCore.QStringList()
for v in values:
s = QtCore.QString(v)
qlist.append(s)
qlistwidget.addItems(qlist)
Altri suggerimenti
Anche se non è una sostituzione diretta, si potrebbe trovare utile guardare la classe QDataWidgetMapper:
http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html
Se non hai paura di leggere il codice C ++, questo esempio potrebbe anche rivelarsi utile:
https://doc.qt.io/qt -4.8 / qt-sql-sqlwidgetmapper-example.html
Si noti che il mapper opera all'interno quadro Model / View di Qt. In questo esempio, il modello sembra appena essere un modello di database SQL.