从 .NET 世界转向 Python 和 PyQt4。想知道是否有人熟悉任何可以让我将数据绑定到 Qt 小部件的功能?例如(使用 sqlalchemy 处理数据):
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
这样的事情可能吗?
从 .NET 世界转向 Python 和 PyQt4。想知道是否有人熟悉任何可以让我将数据绑定到 Qt 小部件的功能?例如(使用 sqlalchemy 处理数据):
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
这样的事情可能吗?
虽然不是直接替换,但您可能会发现查看 QDataWidgetMapper 类很有用:
http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html
如果您不害怕阅读 C++ 代码,那么这个示例也可能会有所帮助:
https://doc.qt.io/qt-4.8/qt-sql-sqlwidgetmapper-example.html
请注意,映射器在 Qt 的模型/视图框架内运行。在这个例子中,模型恰好是一个 SQL 数据库模型。
一种选择是有一个从查询返回列表(或元组)对象的函数,然后使用它来更新 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)