Доброго времени суток, читатели, зрители моего канала 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()
ну да попробуйте сами
Продолжим рассматривать программный. Теперь обратимся к следующему скриншоту.
Метод 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.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.