Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/191: Рейтинг темы: голосов - 191, средняя оценка - 4.96
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
PyQt5

Получение данных из QTableWidget

09.03.2018, 10:13. Показов 36333. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
У меня есть небольшая программка, в ней таблица с изменяющимся числом строк. Пользователь заполняет таблицу и по нажатию кнопки это передаётся в обработку(заполняется шаблон).
По документации понятно, что просто получить данные нельзя, нужно как-то изворачиваться. На форумах/в статьях никакой дельной информации не удалось найти, только советы по переходу в QTableView и через модель это вытаскивать(примерно это было затронуто в книге Прохоренок и Дронова, но их пример с делегатами у меня не работает ). Пример кода прилагаю. Заранее спасибо.

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
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QSpinBox, QTableWidget
 
class Example(QWidget):
 
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
 
    def initUI(self):
 
        # Создаём spinbox для изменения числа строк таблицы
        self.spin = QSpinBox(self)
        self.spin.move(10, 10)
        self.spin.setMaximum(10)
        self.spin.setMinimum(1)
        self.spin.valueChanged.connect(self.change)
 
        # Создаём таблицу. 1 столбец, число строк имзеняемое, начиная с 1
        self.table = QTableWidget(self)
        self.table.setColumnCount(1)
        self.table.setRowCount(int(self.spin.text()))
        self.table.setHorizontalHeaderLabels(["ФИО"])
        self.table.move(10, 50)
 
        # Делаем кнопку, по нажатию которой мы должны передаём данные дальше в обработку
        self.btn = QPushButton("+", self)
        self.btn.move(80, 10)
        self.btn.resize(30, 30)
        #self.btn.clicked.connect(self.getData)
 
 
        self.setGeometry(300, 300, 300, 300)
        self.setWindowTitle("Application")
        self.show()
 
    def change(self):
        self.table.setRowCount(int(self.spin.text()))
 
    def getData(self):
        print ("111")
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2018, 10:13
Ответы с готовыми решениями:

QTableWidget (1) >>> QTableWidget (2) исключить повторяющиеся строки
Добрый день. Подскажите как лучше реализовать... Хочу реализовать исключение повторяющихся строк. Допустим из первого QTableWidget...

Установка данных в ячейку QTableWidget
Здравствуйте знатоки, помогите решить проблему. Сразу к делу. # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import...

Ошибка при повторной загрузуке данных в QTableWidget
Привет всем. Пытаюсь формировать таблицу, одна колонка содержит QComboBox. По кнопке добавляю строки, заношу в массив. потом необходимо...

6
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,762
09.03.2018, 11:52
Цитата Сообщение от zllo Посмотреть сообщение
По документации понятно, что просто получить данные нельзя,
с чего это?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
   def getData(self):
        rows = self.table.rowCount()
        cols = self.table.columnCount()
        data = []
        for row in range(rows):
            tmp = []
            for col in range(cols):
                try:
                    tmp.append(self.table.item(row,col).text())
                except:
                    tmp.append('No data')
            data.append(tmp)
        for i in data: print(i)
2
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2018, 12:05
Лучший ответ Сообщение было отмечено zllo как решение

Решение

zllo, Это нужно было?
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
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QSpinBox, \
    QTableWidget
 
 
class Example(QWidget):
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
    def initUI(self):
        # Создаём spinbox для изменения числа строк таблицы
        self.spin = QSpinBox(self)
        self.spin.move(10, 10)
        self.spin.setMaximum(10)
        self.spin.setMinimum(1)
        self.spin.valueChanged.connect(self.change)
 
        # Создаём таблицу. 1 столбец, число строк имзеняемое, начиная с 1
        self.table = QTableWidget(self)
        self.table.setColumnCount(1)
        self.table.setRowCount(int(self.spin.text()))
        self.table.setHorizontalHeaderLabels(["ФИО"])
        self.table.move(10, 50)
 
        # Делаем кнопку, по нажатию которой мы должны передаём данные дальше в обработку
        self.btn = QPushButton("+", self)
        self.btn.move(80, 10)
        self.btn.resize(30, 30)
        self.btn.clicked.connect(self.get_data)
 
        self.setGeometry(300, 300, 300, 300)
        self.setWindowTitle("Application")
        self.show()
 
    def change(self):
        self.table.setRowCount(int(self.spin.text()))
 
    def get_data(self):
        for i in range(self.table.rowCount()):
            print(self.table.item(i, 0).text())
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
2
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
09.03.2018, 12:10  [ТС]
vic5710, не нашёл функции .text(), вернее даже, перехода к ней. Спасибо за ответ.
alex925, да. Спасибо за ответ. Отдельное спасибо за лаконичность функции
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2018, 12:20
zllo, вообще на будущие, данные можно извлечь из любого виджета, а то что ты читал советы использовать отдельную view and model это относится к истории о создании более гибкой таблицы, где можно настроить много разных параметров по хранению и отображению данных.

P.S. ни когда не используй метод move, используй layouts.
1
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
09.03.2018, 12:37  [ТС]
alex925, Понял. И через layouts размер виджета таблицы подстроится под окно и будет меняться при изменении размера окна, я прав?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2018, 12:41
Именно так
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2018, 12:41
Помогаю со студенческими работами здесь

[B] Excel файл в базу данных и вывести в QTableWidget [/B]
Здравствуйте люди!;) PyQt5, Python. Как можно закинуть excel файл в базу данных то-есть чтоб все данные записались в базу данных...

Получение текста из QTextEdit, находящимся в QTableWidget
Добрый день, добавляю в таблицу TextEdit с помощью CellWidget. Подскажите пожалуйста, как можно получить текст из TextEdit?

Получение значения CheckBox из таблицы в QTableWidget
Добрый день. Помоги пожалуйста . Как вытащить из таблицы занчение Checkbox. true или false. Установить установил ,а вытащить не могу.

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

Не подключается QTableWidget к базе данных
Извините за беспокойство. Сам недавно столкнулся с QT и вообще с Си, поэтому не могу распинать свой мозг на нужное решение. Написал...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru