Найти - Пользователи
Полная версия: Отображение/редактирование blob из QtSql модели как картинки в приложении на PyQt4
Начало » GUI » Отображение/редактирование blob из QtSql модели как картинки в приложении на PyQt4
1
lwwwr
Есть БД SQLite, есть приложение под PyQt4. База подключается, таблица отображается. Возникла проблема с реализацией отображения blob полей. поля blob содержат картинку, которую нужно посмотреть и/или изменить Добавление строк в БД работает, изменение тоже.

Как это можно реализовать?

Для оперирования с БД обязателен QtSql.

Примерный код без реализации отображения blob ниже

 import sys
from PyQt4 import QtCore, QtGui, QtSql
def initializeModel(model):
   model.setTable('ololo')
   model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
   model.select()
   model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
   model.setHeaderData(1, QtCore.Qt.Horizontal, "photo")
   model.setHeaderData(2, QtCore.Qt.Horizontal, "Mark")
   model.setHeaderData(3, QtCore.Qt.Horizontal, "Surname")
def createView(title, model):
   view = QtGui.QTableView()
   view.setModel(model)
   view.setWindowTitle(title)
   return view
def addrow():
   print (model.rowCount())
   ret = model.insertRows(model.rowCount(), 1)
   print (ret)
def findrow(i):
   delrow = i.row()
if __name__ == '__main__':
   app = QtGui.QApplication(sys.argv)
   db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
   db.setDatabaseName('1.sqlite')
   model = QtSql.QSqlTableModel()
   delrow = -1
   initializeModel(model)   
   view1 = createView("Table", model)
   view1.clicked.connect(findrow)
   dlg = QtGui.QDialog()
   layout = QtGui.QVBoxLayout()
   layout.addWidget(view1)
   button = QtGui.QPushButton("Add a row")
   button.clicked.connect(addrow)
   layout.addWidget(button)
   btn1 = QtGui.QPushButton("del a row")
   btn1.clicked.connect(lambda: model.removeRow(view1.currentIndex().row()))
   layout.addWidget(btn1)
   dlg.setLayout(layout)
   dlg.setWindowTitle("Database Demo")
   dlg.show()
   sys.exit(app.exec_())
Rodegast
Месье не слышал про ООП?
lwwwr
Rodegast
Месье не слышал про ООП?
У месье сложновато с ООП, но не совсем глухо.
Код просто разовый и всё.
Думал, что можно было бы не загоняться, а написать пару костылей и всё.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB