Найти - Пользователи
Полная версия: Динамическое добавление строк в таблицу Pyqt4
Начало » GUI » Динамическое добавление строк в таблицу Pyqt4
1
reychal
Подскажите, пожалуйста, как реализовать динамическое добавление строк в таблицу и обновление инфы в ячейках? В отдельном классе происходит манипуляция с данными через sqlite3. Нужно, чтобы при добавлении/изменении данных в БД, эти изменения отображать в таблице. Пока даже не представляю, что нужно смотреть. Таблица формируется через QtGui.QStandardItemModel .
reychal
Никто не знает?
Андрей Светлов
На ум приходит примерно 33 различных способа.
Покажите свой код, что делали и что не вышло.
reychal
Есть несколько файлов в каждом из которых есть классы, которые выполняют определенные операции. В первом файле формируется главное окно и его содержимое, во втором дочерние окна, в остальных только действия без 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
Хм… Я так понимаю, вопрос должен быть один из популярных, но понятной информации не нашла. в этом форуме всегда такая спячка или мне не повезло?
Андрей Светлов
Милая барышня, а что вы хотели?
Упоминаете модель. В приложенном огрызке метода, похоже, заполняете QTableWidget напрямую. Отчего, зачем - загадка.
Потом хотите заставить ваш виджет обновиться. Как вы это делаете и что не выходит - решительно неясно.

Просьба показать код (да-да, в таком виде чтобы его можно было запустить и увидеть всё самому) успехом не увенчалась.
Расспрашивать, а что же не выходит и как выглядит то, что уже сделано, - вытягивая информацию строчка за строчкой, - большого желания нет.

Нужно-то вам.
reychal
Понятно. Спасибо за ответ. Сначала делала моделью, потом сразу виджет. Весь код ничего не даст. Я ведь не писала, что у меня есть ошибки в коде. Их нет и не может быть из-за отсутствия понятия как вообще это сделать. Ну НЕ ЗНАЮ я как это можно даже теоретически сделать. Вы профессионалы и не можете дать ответ по типу: для обновления нужны такие-то классы, методы; пример, исходник посмотреть там-то. Вы сами написали ,что есть 33 способа, вот и ткните хотя бы в один из них.
Андрей Светлов
Хотите посмотреть исходники - вот вам: http://qt.gitorious.org/pyside/pyside-examples/trees/HEAD/examples/sql
reychal
Спасибо большое за ссылку, Вы очень помогли.
Андрей Светлов
Кушайте на здоровье
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB