PYQT4: Databinding؟
-
09-09-2019 - |
سؤال
القادمة من World .NET إلى Python و Pyqt4. كان يتساءل عما إذا كان أي شخص على دراية بأي وظيفة من شأنها أن تسمح لي بربط البيانات عن الحاجيات كيو تي؟ على سبيل المثال (باستخدام SQLAlchemy للبيانات):
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
هل هذا شيء ممكن؟
المحلول
سيكون لدى أحد الخيارات وظيفة إرجاع كائن قائمة (أو tuple) من استعلام، ثم استخدم ذلك لتحديث 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)
نصائح أخرى
على الرغم من عدم استبدال مباشر، فقد تجد أنه من المفيد أن ننظر إلى فئة Qdatawidgetmapper:
http://pyqt.sourceforge.net/docs/pyqt4/qdatawidgetmapper.html.
إذا لم تكن خائفا من كود القراءة C ++، فقد يثبت هذا المثال أيضا أن يكون مفيدا:
https://doc.qt.io/qt-4.8/qt-sql-sqlwidgetmapper-example.html.
لاحظ أن MAPPER يعمل داخل إطار نموذج / عرض QT. في هذا المثال، يحدث النموذج فقط طراز قاعدة بيانات SQL.