С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 25

Передать заголовки столбцов таблицы

14.01.2018, 19:21. Показов 10326. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите с таким вопросом.

На форме разместил виджет QTableWidget. В него передаю содержимое загружаемого csv-файла. Соответственно, все содержимое выводится в виде таблицы. Здесь проблем нет.

Под QTableWidget находятся два ComboBox. В одном из них выбирается значения для отображения на оси X, в другом для оси Y. Для дальнейшего построения графика по значениям таблицы.

Каждый ComboBox должен отображать список из заголовков столбцов таблицы, которая выводится в QTableWidget.
Как передать этот список? Использовал конструкцию вида

spisok = self.itemFromIndex([0, ])
self.ComboBox1.addItem(spisok)

Не выходит.
Этот момент интересует в первую очередь.


А дальше надо в зависимости от выбранного индекса (названия) столбца, передать в переменные значения этих столбцов для указанного построения графика.


Желательно, чтобы во втором ComboBox скрывалось то значение, которое выбрано в первом ComboBox. Если в первом комбо выбирается другое значение, то соответственно, из второго скрывается уже оно. А предыдущее появляется.
Это для того, чтобы не был выбран один и тот же столбец для обеих осей.

Либо ничего не скрывать, но выводить предупреждающее сообщение.

Как реализовать такую функцию?

Заранее спасибо ))

Вот код для виджета QTableWidget
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
class MyTable(QtWidgets.QTableWidget):
    def __init__(self, r, c):
        super().__init__(r, c)
        self.check_change = True
        self.init_ui()
 
    def init_ui(self):
        self.cellChanged.connect(self.c_current)
        #self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) # Запрет редактирования таблицы
        self.show()
 
    def c_current(self):
        if self.check_change:
            row = self.currentRow()
            col = self.currentColumn()
            value = self.item(row, col)
            value = value.text()
 
 
    def open_sheet(self):
        self.check_change = False
        path = QtWidgets.QFileDialog.getOpenFileName(self, 'Open CSV', os.getenv('HOME'), 'CSV(*.csv)')
        if path[0] != '':
            with open(path[0], newline='', encoding="utf-8") as csv_file:
                self.setRowCount(0)
                self.setColumnCount(2)
                my_file = csv.reader(csv_file, delimiter=',', quotechar='|')
                for row_data in my_file:
                    row = self.rowCount()
                    self.insertRow(row)
                    if len(row_data) > 2:
                        self.setColumnCount(len(row_data))
                    for column, stuff in enumerate(row_data):
                        item = QtWidgets.QTableWidgetItem(stuff)
                        self.setItem(row, column, item)
                
        self.selectRow(0)
        self.check_change = True
А на форме я его вывожу с помощью строки
self.tableWidget = MyTable(10, 2)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2018, 19:21
Ответы с готовыми решениями:

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

Как добавить инкрементированные заголовки для столбцов в панде?
import pandas as pd md={'key1': , 'key2': } df=pd.DataFrame.from_dict(md, orient='index').reset_index() #rasscet chisla ...

Сортировка столбцов таблицы по клику на заголовки
не могу отсортировать таблицу (щелкаем на заголовок столбца, сортируется столбец) <!DOCTYPE html> <html...

7
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
15.01.2018, 17:01
Работу с Qt-шными таблицами и т. п. я всегда советую начинать вот с этой статьи
https://habrahabr.ru/post/171443/
Если вы последуете по этому пути - то заголовки ваших столбцов будут получаться из модели через метод headerData.
А для комбобоксов сделаете свою маленькую модель, которая будет на них ссылаться.
0
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 25
15.01.2018, 18:11  [ТС]
Спасибо! Статью прочитал, про эти методы тоже вчера "курил". Информация полезная.
Но переделывать времени уже не остается, прогу надо добить уже на этой неделе ((

Посоветуете, что можно сделать в моем случае? ))

Не могу понять, как работает метод itemFromIndex. Он вроде отсылает обратно к виджету tableWidget, данные из которого надо доставать при помощи метода text(). Перерыл уже кучу всего, но найти понятный рабочий пример не могу ((
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
15.01.2018, 18:19
Да ничего не посоветую. Отладчик в руки и вперёд. addItem должен добавлять.
0
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 25
15.01.2018, 21:30  [ТС]
Вопрос остается открытым
Как передать названия столбцов виджета QTableWidget в ComboBox?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.01.2018, 21:46
Artur87,
Python
1
2
3
4
5
6
7
8
9
10
from PyQt5 import QtWidgets
 
app = QtWidgets.QApplication([])
 
table = QtWidgets.QTableWidget(5,5)
table.setHorizontalHeaderLabels(['1', '2', '3', '4', '5'])
print([table.horizontalHeaderItem(i).text() for i in range(table.columnCount())])
table.show()
 
app.exec()
Вот тебе извлечение названий столбцов, заполнение другого виджета думаю осилишь.
0
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 25
16.01.2018, 19:04  [ТС]
alex925, спасибо!
Я правильно понимаю, что
Python
1
table.horizontalHeaderItem(i).text()
передает содержимое самой верхней строки, даже если отсутствуют заранее созданные заголовки:
Python
1
setHorizontalHeaderLabels(['1', '2', '3', '4', '5']
?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.01.2018, 21:16
Цитата Сообщение от Artur87 Посмотреть сообщение
table.horizontalHeaderItem(i).text()
Это просто извлечение заголовка столбца. Если не заполнишь их до этого, получишь шиш.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2018, 21:16
Помогаю со студенческими работами здесь

Заголовки столбцов из значений другой таблицы
Приветствую. sql, C#, windows forms Имеются несколько готовый таблиц... ...

Переименовать заголовки столбцов (шапку) таблицы listview
Есть таблица listview с 2 столбцами. Возможно ли при нажатии на кнопку переименовать шапку таблицы? Например шапка таблицы - Марка |...

Как скрыть заголовки столбцов таблицы jTable?
Как скрыть заголовки столбцов таблицы jTable?

Определение координат центров ячеек из столбцов, текст которых - вписан в заголовки столбцов
Добрый вечер, специалисты по эксель. Помогите решить вопрос. На листе несколько столбцов с текстовыми ячейками. У каждого столбца...

Сортировка Таблицы формы (полученной из Дерева значений) по клику на заголовки таблицы
Добрый день уважаемые форумчане ... Есть проблема - прошу совета у Гуру ... Пришлось для списка Документов сделать Дерево значений и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru