Вот простенький пример, форма с одним комбобоксом, который заполняется из SQLite.
Строки в комбик добавляются согласно количеству записей таблицы, но вместо нормального текста в них отображается - <PyQt4.QtCore.QVariant object at 0xb77021dc>.
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, QtSql
import connection
class ComboTest(QtGui.QWidget):
def __init__(self,*args):
QtGui.QWidget.__init__(self,*args)
boxlay = QtGui.QHBoxLayout(self)
frame = QtGui.QFrame(self) # Фрейм
frame.setFrameShape(QtGui.QFrame.StyledPanel)
frame.setFrameShadow(QtGui.QFrame.Raised)
gridlay = QtGui.QGridLayout(frame) # Менеджер размещения элементов во фрейме
label1 = QtGui.QLabel(u"Offices:",frame) # Текстовая метка.
gridlay.addWidget(label1,0,0)
combo1 = QtGui.QComboBox(frame) # Поле ввода с раскрывающимся списком.
combo1.setEditable(True)
gridlay.addWidget(combo1,0,1)
boxlay.addWidget(frame)
query1=QtSql.QSqlQuery()
query1.exec_("select id, location from offices")
while query1.next():
combo1.addItem(str(query1.value(1)))
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
if not connection.createConnection():
sys.exit(1)
ct = ComboTest()
ct.show()
sys.exit(app.exec_())
Пробую совсем простую конструкцию:
#!/bin/env python
from PyQt4 import QtSql, QtGui
def createConnection():
db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(":memory:")
if not db.open():
QtGui.QMessageBox.critical(None, QtGui.qApp.tr("Cannot open database"),
QtGui.qApp.tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information "
"how to build it.\n\n"
"Click Cancel to exit."),
QtGui.QMessageBox.Cancel)
return False
query = QtSql.QSqlQuery()
query.exec_("create table person(id int primary key, idoffices int,"
"firstname varchar(20), lastname varchar(20))")
query.exec_("insert into person values(101, 0, 'Danny', 'Young')")
query.exec_("insert into person values(102, 0, 'Christine', 'Holand')")
query.exec_("insert into person values(103, 1, 'Lars', 'Gordon')")
query.exec_("insert into person values(104, 2, 'Roberto', 'Robitaille')")
query.exec_("insert into person values(105, 2, 'Maria', 'Papadopoulos')")
query.exec_("select id, location from offices")
query.next()
print query.value(1)
createConnection()
И все равно в консоли наблюдаю вместо нормальных данных столбца то же:
<PyQt4.QtCore.QVariant object at 0xb77021dc>
Подскажите, что не так, измучился.