Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 19, 2008 17:48:01

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt - пару вопросов

Всем привет. Есть вопрос по tableWidget. Я добавляю ячейки следующим макаром:

rowNumb = 0
for line in row:
self.ui.tableWidget.insertRow (rowNumb)
itemArr = {0: line.Call_date,
1: line.callingPartyNumber,
2: line.finalCalledPartyNumber,
3: line.duration}
for cel in range (1, 4):
newItem = QtGui.QTableWidgetItem ()
newItem.setText (str (itemArr [cel]))
self.ui.tableWidget.setItem (rowNumb, cel, newItem)
print str (itemArr [cel])
newItem = QtGui.QTableWidgetItem ()
newItem.setText (str (itemArr [0]))
self.ui.tableWidget.setItem (rowNumb, 0, newItem)
rowNumb += 1
Возникает два вопроса:
1). Как можно заставить отображать большое количество строк (более 16000), а то вылетает питон в винде и все на этом :(
2). Почему, если использую код ниже, у меня строки добавляются, но заполняются только самые нижние ячейки?
rowNumb = 0
for line in row:
self.ui.tableWidget.insertRow (rowNumb)
itemArr = {0: line.Call_date,
1: line.callingPartyNumber,
2: line.finalCalledPartyNumber,
3: line.duration}
for cel in itemArr:
newItem = QtGui.QTableWidgetItem ()
newItem.setText (str (itemArr [cel]))
self.ui.tableWidget.setItem (rowNumb, cel, newItem)
rowNumb += 1



Отредактировано (Март 9, 2009 21:31:41)

Офлайн

#2 Фев. 20, 2008 10:42:09

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt - пару вопросов

Чтобы работать с огромным кол-вом данных надо юзать Model/View Framework, иначе будет охреневший, ничем не оправданный, перерасход ресурсов. Тебе поможет QTableView и наследование класса QAbstractTableModel, в котором надо будет обязательно переопределить несколько виртуальный методов: rowCount(), columnCount() и data(). Дополнительно можешь ещё и headerData() переопределить, чтоб заголовки колонок таблицы были красивее и информативнее.



Офлайн

#3 Фев. 20, 2008 10:53:44

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt - пару вопросов

poltergeist
Чтобы работать с огромным кол-вом данных надо юзать Model/View Framework, иначе будет охреневший, ничем не оправданный, перерасход ресурсов. Тебе поможет QTableView и наследование класса QAbstractTableModel, в котором надо будет обязательно переопределить несколько виртуальный методов: rowCount(), columnCount() и data(). Дополнительно можешь ещё и headerData() переопределить, чтоб заголовки колонок таблицы были красивее и информативнее.
а можно пример? А то я только начал с таблицами разбираться.



Офлайн

#4 Фев. 20, 2008 12:06:43

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQt - пару вопросов

well
poltergeist
Чтобы работать с огромным кол-вом данных надо юзать Model/View Framework, иначе будет охреневший, ничем не оправданный, перерасход ресурсов. Тебе поможет QTableView и наследование класса QAbstractTableModel, в котором надо будет обязательно переопределить несколько виртуальный методов: rowCount(), columnCount() и data(). Дополнительно можешь ещё и headerData() переопределить, чтоб заголовки колонок таблицы были красивее и информативнее.
а можно пример? А то я только начал с таблицами разбираться.
http://pypi.python.org/pypi/EuroPython2006_PyQt4_Examples



Офлайн

#5 Июнь 27, 2018 10:43:00

KriO
Зарегистрирован: 2012-10-07
Сообщения: 61
Репутация: +  9  -
Профиль   Отправить e-mail  

PyQt - пару вопросов

aliens
а подскажите пожалуйста, куда копать, чтобы элементыы при изменении окна изменяли свои размеры?

Если Вы добавляете свой виджет в QVBoxLayout или в QHBoxLayout, то вторым параметром в метод addWidget() следует указать 1.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version