Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для DjonyCooper
10 / 7 / 4
Регистрация: 28.05.2021
Сообщений: 136
PyQt5

Автоматическое увеличение количества строк в QTableWidget

12.08.2022, 13:35. Показов 1469. Ответов 1

Студворк — интернет-сервис помощи студентам
Всем привет, помогите решить проблему, в общем ее суть в том, что не выходит реализовать механизм автоматического добавления строк в QTableWidget, а именно я используя sqlite3 получаю данные из db базы, которые размещаются в GUI. Вот код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import sys, sqlite3
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
 
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        con = sqlite3.connect("config/ter.db")
        cur = con.cursor()
        sab = 'SELECT * FROM ter'
 
        for row in cur.execute(sab):
            print(row)
 
        table = QTableWidget(self)
        table.setMinimumSize(750, 200)
        table.setColumnCount(3)
        table.setHorizontalHeaderLabels(["IP","Hostname","Примечание"])
        table.setColumnWidth(0, 100)
        table.setColumnWidth(1, 100)
        table.setColumnWidth(2, 532)
        table.setRowCount(4)
        tablex = 0
        for x in cur.execute(sab):
            table.setItem(tablex, 0, QTableWidgetItem(row[1]))
            table.setItem(tablex, 1, QTableWidgetItem(row[3]))
            table.setItem(tablex, 2, QTableWidgetItem(row[2]))
            tablex += 1
 
 
        # Buttons:
        button1 = QPushButton('Exit', self)
        button1.resize(button1.sizeHint())
        button1.move(50, 400)
 
 
        def But1Click():
            if con.close():
                print('close')
            else:
                print('db dont close')
                sys.exit()
 
        button1.clicked.connect(But1Click)
 
        # Window:
        self.setGeometry(300, 100, 650, 450)
        self.setWindowTitle('Icon')
        self.show()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
Проблема в строке #25 table.setRowCount(4) , здесь указываю конкретное количество строк, которое будет в виджете таблицы, но это сильно не унифицировано, можно ли автоматизировать процесс, скажем чтобы количество строк выставлялось такое сколько содержит в себе db? Буду благодарен за любой материал, который поможет разобраться в этом вопросе.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2022, 13:35
Ответы с готовыми решениями:

Увеличение количества строк в двумерном динамическом массиве
Здравствуйте. Есть двумерный динамический массив строк ownerbase. После выполнения определенных условий нужно занести в него еще одну...

Автоматическое добавление заданного количества строк с наполнением
В ступоре, подскажите кто чем может. приложил файл, мне нужно, чтобы при выборе количества в ячейке F3 например и выборе даты в ячейке...

Двумерный массив: увеличение количества столбцов и строк во время выполнения программы
Здравствуйте, возникла такая проблема, на форме есть двумерный массив изначально он инициализирован как D_0 = new double; во время...

1
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,656
12.08.2022, 13:59
Лучший ответ Сообщение было отмечено DjonyCooper как решение

Решение

Выбор QTableWidget в качестве отображалки содержимого- заведомо неправильный путь, да и с sqlite qt умеет работать
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableView, QHBoxLayout, QPushButton
from PyQt5.QtSql     import QSqlDatabase, QSqlTableModel
from PyQt5.QtCore    import Qt
 
class Window(QWidget):
  def __init__(self):
    super().__init__(None)
    model = QSqlTableModel()
    model.setTable("ter")
    model.select()
    model.setHeaderData(0, Qt.Horizontal, "IP")
    model.setHeaderData(1, Qt.Horizontal, "Hostname")
    model.setHeaderData(2, Qt.Horizontal, "Примечание")
    table = QTableView()
    table.setModel(model)
    table.setMinimumSize(750, 200)
    table.setColumnWidth(0, 100)
    table.setColumnWidth(1, 100)
    table.setColumnWidth(2, 532)
    button1 = QPushButton('Exit')
    button1.clicked.connect(self.close)
    l = QHBoxLayout()
    l.addWidget(table)
    l.addWidget(button1)
    self.setLayout(l)
    self.setGeometry(300, 100, 650, 450)
    self.setWindowTitle('Icon')
 
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("config/ter.db")
db.open()
window = Window()
window.show()
sys.exit(app.exec_())
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2022, 13:59
Помогаю со студенческими работами здесь

Автоматическое выделение строки в QTableWidget
Подскажите, как сделать автоматическое выделение строки при создании новой таблицы? В моем случае: код создает таблицу, заполняет ее, но не...

QTableWidget, увеличение ячейки по высоте, если много текста
Здравствуйте, я сделал таблицу: QTableWidget *upperTableWidget = new QTableWidget(this); upperTableWidget->setRowCount(15); ...

Увеличение количества добавления товаров в корзину в зависимости от минимального количества
Доброго времени суток! Понадобилось на сайте добавлять в корзину не по 1 товару, а количество, указанное в минимальном заказе. Как можно...

Автоматическое увеличение номера заявки
Здравствуйте. Есть программа "Анкета" , в которой заполняется заявка. Проблема в том, что в поле заявки всегда нужно вписывать номер...

Автоматическое увеличение размера шрифта
Здравствуйте. Как сделать так, чтобы при просмотре сайта с мобильных устройств, в случае, если какой то определнный текстовый элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru