Russian Qt Forum
Ноябрь 23, 2024, 13:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Редактирование blob-data из БД sqlite в приложении PyQt4  (Прочитано 3312 раз)
lwwwr
Гость
« : Декабрь 04, 2016, 02:03 »

Доброго времени суток.
Есть приложение, написанное на PyQt4.
Суть такая.
Есть БД(SQLite), есть приложение. БД подключается, нужная таблица загружается(Таблица с именем ololo, столбцы idid, photo,mark,surname), информация с таблицы отображается также.
Но.
Один тип в таблице формата blob(photo).
Его необходимо в приложении видеть. То бишь, данные blob(некая картинка), нужно посмотреть и/или изменить.
Добавление данных работает, удаление и редактирование тоже.
Но вот с blob единственная проблема. Конкретно с реализацией заливки и просмотра картинки.
Есть ли какой-нибудь солюшн?


Код
Python
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_())

Это примерный код приложения.
Если есть реализация, то как её можно сюда впихнуть?
« Последнее редактирование: Декабрь 04, 2016, 02:09 от lwwwr » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 05, 2016, 09:43 »

Картинки удобно как base64 хранить, а его можно как текст хранить
Записан

vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #2 : Декабрь 06, 2016, 08:21 »

ну например есть 'foto.png'
Код:
QPixmap pix;
pix.load("foto.png");
QLabel label;
label.setPixmap(pix);
label.show();
менять можно через QImage если на уровне пикселей
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 23.