Найти тему
programmer's notes (python and more)

Программирование на языке Python. Библиотека PyQT5. Представление табличных данных (QTableWidget, QTableWidgetItem), продолжение

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

QTableWidget, QTableWidgetItem - продолжаем работать с таблицами на Python

Продолжим работать с таблицами (QTableWidget), сегодня некоторые приёмы управление объектом ТАБЛИЦА. Рекомендую вспомнить материал прошлой статьи.

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

Программа представлена двумя скриншотами и ссылкой на полный её текст ниже.

Класс основного окна. Весь текст программы см. ниже по ссылке
Класс основного окна. Весь текст программы см. ниже по ссылке

Класс окна, наследующий от QWidget содержит добавление основных элементов. Само добавление не комментирую, так как всё это знакомо. Сама таблица добавляется на основе класса Tb наследующего от QTableWidget. На скриншоте выше показан только метод upd(), остальные методы нажнем скриншоте. Поэтому рассмотрим метод upd(). Этот метод сортирует содержимое таблицы по первому столбцу, который должен содержать фамилии учеников.

Содержимое таблицы считывается в двумерный список ls. Для это используется метод QTableWidget.item(i, j).text(), где i номер строки, j номер столбца. Затем список сортируется, а таблица очищается последовательностью

self.tb.clear() # не обязательный метод
self.tb.setRowCount(0);

После этого таблица вновь инициализируется в неё добавляются отсортированные строки.

Знающие люди удивятся: зачем так сложно сортировать? Да чтобы почувствовать силу программирования, друзья. А так можно и этим воспользоваться

QTableWidget.sortItems()

ну да попробуйте сами

Класс ТАБЛИЦА (QTableWidget) и основная часть программы. Весь текст программы см. ниже по ссылке
Класс ТАБЛИЦА (QTableWidget) и основная часть программы. Весь текст программы см. ниже по ссылке
primer222.py

Продолжим рассматривать программный. Теперь обратимся к следующему скриншоту.

Метод ins() добавляет строку в таблицу с содержимым из полей редактирования. В начале добавляем строку

self.tb.setRowCount(self.tb.rowCount() + 1)

потом её заполняем

self.tb.setItem(j, 0, QTableWidgetItem(fio))
self.tb.setItem(j, 1, QTableWidgetItem(oce))

Обратимся теперь к методу dels().

Ну здесь всё просто, используем метод

QTableWidget.removeRow(row), где row номер строки.

Обратимся тепеhь к классу Tb.

Ну здесь практически всё знакомо. Обратим только внимание на метод (событие) QTableWidget.cellClick(). Замечательный метод, выполняющийся при щелчке мыши по строке таблицы и получающий в качестве параметров номер строки и номер ячейки. self.row т.о. всегда показывает на текущую строку, если был щелчок мыши. Это значение используется при удалении строки. После удаления self.row становится равным -1.

Рисунок 1
Рисунок 1

Ну, пока всё!

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

Что вы от меня хотите, эту таблицу создал искусственный интеллект
Что вы от меня хотите, эту таблицу создал искусственный интеллект