2009-02-26 8 views
3

Venant du monde .NET sur Python et PyQt4. Se demandait si quelqu'un est familier avec une fonctionnalité qui me permettrait de lier des données aux widgets Qt? Par exemple (en utilisant sqlalchemy pour les données):PyQt4: Liaison de données?

gems = session.query(Gem).all() 
list = QListWidget() 
list.datasource = gems 

Est-ce possible?

Répondre

3

Une option aurait une fonction qui renvoie un objet de liste (ou un tuple) à partir d'une requête, puis l'utilise pour mettre à jour le QListWidget. N'oubliez pas que QListWidget stocke QListStrings. Votre fonction de mise à jour pourrait ressembler à ceci:

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) 
4

Bien que pas un remplacement direct, vous trouverez peut-être utile de regarder la classe QDataWidgetMapper:

http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html

Si vous n'êtes pas peur de la lecture code C++, cet exemple pourrait se révéler aussi utile:

https://doc.qt.io/qt-4.8/qt-sql-sqlwidgetmapper-example.html

Remarque e au mapper fonctionne dans le cadre Model/View de Qt. Dans cet exemple, il se trouve que le modèle est un modèle de base de données SQL.