2009-02-26 7 views
3

Переход от мира .NET к Python и PyQt4. Интересно, знаком ли кто-нибудь с любой функциональностью, которая позволила бы мне привязывать данные к виджетам Qt? Например (с использованием sqlalchemy для данных):PyQt4: привязка данных?

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

Возможно ли такое?

ответ

3

Один вариант имеет функцию, которая возвращает объект (или кортеж) из запроса, а затем использует его для обновления QListWidget. Помните, что QListWidget хранит QListStrings. Ваша функция обновления может выглядеть следующим образом:

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

Хотя не является прямой заменой, вы можете найти его полезно посмотреть на класс QDataWidgetMapper:

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

Если вы не боитесь читать C++ код, этот пример может также оказаться полезным:

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

Примечание тыс в mapper работает в рамках модели Model/View Qt. В этом примере модель просто является моделью базы данных SQL.

 Смежные вопросы

  • Нет связанных вопросов^_^