Форум сайта python.su
Доброго времени суток и с праздником всех.
Пишу свое первое приложение на PyQt.
Написал все, кроме обновления информации в QTreeView.
На главной панели приложения расположился список(QTreeView) информация в который попадает из (QStandartItemModel) , не могу найти способ грамотно обновить информацию в списке, не мешая пользователю. Подскажите, существуют ли какие-то методы решения, а лучше ткните на метод в документации.
Спасибо. И еще раз с праздниками.
Офлайн
А если так:
ID, TYPE, STATUS, MARK, MODEL_T, GOV_NUMBER, DRIVER = range(7) class MainWindow(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QMainWindow.__init__(self, parent) self.resize(700, 500) Form, Base = uic.loadUiType('ui/MainWindow.ui') self.ui = Form() self.ui.setupUi(self) ... model1 = ui.treeView model1.setModel(Create_Technique_Model(model1)) model1.resizeColumnToContents(TYPE) model1.resizeColumnToContents(DRIVER) model1.setColumnWidth(ID, 50) model1.setRootIsDecorated(False) model1.setAlternatingRowColors(True) model1.setSortingEnabled(True) def Add_Technique_Model(model, id_, type_t, status, mark, model_t, gov_number, driver): # Добавление строки техники model.insertRow(0) model.setData(model.index(0, ID), id_) model.setData(model.index(0, TYPE), type_t) model.setData(model.index(0, STATUS), status) model.setData(model.index(0, MARK), mark) model.setData(model.index(0, MODEL_T), model_t) model.setData(model.index(0, GOV_NUMBER), gov_number) model.setData(model.index(0, DRIVER), driver) def Create_Technique_Model(parent): # Обработка модуля техники model = QtGui.QStandardItemModel(0, 7, parent) model.setHeaderData(ID, QtCore.Qt.Horizontal, u"id") model.setHeaderData(TYPE, QtCore.Qt.Horizontal, u"Тип техники") model.setHeaderData(STATUS, QtCore.Qt.Horizontal, u"Статус") model.setHeaderData(MARK, QtCore.Qt.Horizontal, u"Марка") model.setHeaderData(MODEL_T, QtCore.Qt.Horizontal, u"Модель") model.setHeaderData(GOV_NUMBER, QtCore.Qt.Horizontal, u"Гос номер") model.setHeaderData(DRIVER, QtCore.Qt.Horizontal, u"Водитель") u = urlopen(('http://188.32.172.228:8000/get_technique/?login_id={0}&tocken={1}').format(LOGIN_ID, TOCKEN)) js = json.load(u) for i in range(len(js['id'])): Add_Technique_Model(model, unicode(js['id'][i]), unicode(js['type'][i]), unicode(js['status'][i]), unicode(js['trend'][i]), unicode(js['model'][i]), unicode(js['number'][i]), unicode(js['driver'][i])) return model
Отредактировано xxnikolayxx (Май 6, 2013 20:15:46)
Офлайн
xxnikolayxx
не мешая пользователю
xxnikolayxxИз-за того, что может занять долгое время? Можно делать наполнение модели в отдельном потоке и по завершению обновлять GUI.
u = urlopen((…
Офлайн
reclosedevВот меня интересует само обновление GUI.
Отредактировано xxnikolayxx (Май 6, 2013 23:45:05)
Офлайн
xxnikolayxxКогда пишется своя модель, при изменениях передается сигнал dataChanged, view на него реагирует.
Заново отправить в модель данныне или существует какой-то другой подход?
Офлайн
reclosedevПонял, спасибо. Попробую.
Офлайн