reychal
Дек. 20, 2010 19:15:03
Подскажите, пожалуйста, как реализовать динамическое добавление строк в таблицу и обновление инфы в ячейках? В отдельном классе происходит манипуляция с данными через sqlite3. Нужно, чтобы при добавлении/изменении данных в БД, эти изменения отображать в таблице. Пока даже не представляю, что нужно смотреть. Таблица формируется через QtGui.QStandardItemModel .
reychal
Дек. 21, 2010 09:09:02
Никто не знает?
Андрей Светлов
Дек. 21, 2010 09:15:06
На ум приходит примерно 33 различных способа.
Покажите свой код, что делали и что не вышло.
reychal
Дек. 21, 2010 09:22:46
Есть несколько файлов в каждом из которых есть классы, которые выполняют определенные операции. В первом файле формируется главное окно и его содержимое, во втором дочерние окна, в остальных только действия без UI. При выполнении простой функции в другом файле, нужно чтобы обновилась таблица в главном окне. Без обновления все работает нормально. А как именно заставить таблицу обновится я не знаю, поэтому прошу помощи.
Функция создания таблицы:
def upTable(self, current=None):
df = dbsql.dbSqlMain(self,self.bdname)
try:
self.retinf = df.selBd()
columns = len(self.retinf[0])
except IndexError as err:
print(err)
else:
rows = len(self.retinf)
row = 0
self.table.clear()
self.table.setRowCount(rows)
self.table.setColumnCount(columns)
self.table.setHorizontalHeaderLabels(['ID', и т.д.])
self.table.setAlternatingRowColors(True)
self.table.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
self.table.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
self.table.setSelectionMode(QtGui.QTableWidget.SingleSelection)
selected = None
while row < rows:
column = 0
while column < columns:
item = QtGui.QTableWidgetItem(str(self.retinf[row][column]))
if current is not None and current == id(self.retinf[row][column]):
selected = item
self.table.setItem(row, column, item)
column+=1
row+=1
self.table.resizeColumnsToContents()
reychal
Дек. 21, 2010 14:52:25
Хм… Я так понимаю, вопрос должен быть один из популярных, но понятной информации не нашла. в этом форуме всегда такая спячка или мне не повезло?
Андрей Светлов
Дек. 21, 2010 16:03:15
Милая барышня, а что вы хотели?
Упоминаете модель. В приложенном огрызке метода, похоже, заполняете QTableWidget напрямую. Отчего, зачем - загадка.
Потом хотите заставить ваш виджет обновиться. Как вы это делаете и что не выходит - решительно неясно.
Просьба показать код (да-да, в таком виде чтобы его можно было запустить и увидеть всё самому) успехом не увенчалась.
Расспрашивать, а что же не выходит и как выглядит то, что уже сделано, - вытягивая информацию строчка за строчкой, - большого желания нет.
Нужно-то вам.
reychal
Дек. 21, 2010 22:12:18
Понятно. Спасибо за ответ. Сначала делала моделью, потом сразу виджет. Весь код ничего не даст. Я ведь не писала, что у меня есть ошибки в коде. Их нет и не может быть из-за отсутствия понятия как вообще это сделать. Ну НЕ ЗНАЮ я как это можно даже теоретически сделать. Вы профессионалы и не можете дать ответ по типу: для обновления нужны такие-то классы, методы; пример, исходник посмотреть там-то. Вы сами написали ,что есть 33 способа, вот и ткните хотя бы в один из них.
Андрей Светлов
Дек. 22, 2010 06:39:41
reychal
Дек. 22, 2010 07:12:39
Спасибо большое за ссылку, Вы очень помогли.
Андрей Светлов
Дек. 22, 2010 09:41:35
Кушайте на здоровье