PyQt4: ligação de dados?
-
09-09-2019 - |
Pergunta
Vindo do mundo .NET sobre a Python e PyQt4. Queria saber se alguém está familiarizado com qualquer funcionalidade que permita-me para ligar dados a Qt? Por exemplo (usando sqlalchemy para dados):
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
É tal coisa possível?
Solução
Uma opção teria uma função que retorna uma lista (ou tupla) objeto de uma consulta, e depois usar isso para atualizar o QListWidget. Lembre-se que o QListWidget armazena QListStrings. Sua função de atualização pode ter esta aparência:
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)
Outras dicas
Embora não seja um substituto direto, você pode achar que é útil olhar para a classe QDataWidgetMapper:
http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html
Se você não está com medo de leitura de código C ++, este exemplo pode também revelar-se útil:
https://doc.qt.io/qt -4.8 / qt-sql-sqlwidgetmapper-example.html
Note que o mapeador opera dentro do quadro Model / View do Qt. Neste exemplo, o modelo só acontece de ser um modelo de banco de dados SQL.