ПИТОН 3 ДЛЯ НАЧИНАЮЩИХ. РАБОТА С QTABLEWIDGET В PyQt5. РЕДАКТИРОВАНИЕ ПОЛЕЙ, ВСТАВКА, УДАЛЕНИЕ, РЕДАКТИРОВАНИЕ ЯЧЕЕК. ИСПОЛЬЗОВАНИЕ DESIGNER.
Использование Designer для разработки кода
Необходимые стандартные функции для таблицы tablewidget
self.table.setHorizontalHeaderLabels(["ID", "", "Статья дохода/расхода", "Сумма"])#Наименование столбцов |
Рис. 13.
В первой строке мы задаем названия столбцов. Вместо наименования-пробелы, т.к. наименование будет указываться на кнопке для сортировки по наименованию (рис. 2, стр.1).
Корректировка ячейки tablewidget
Для копирования: def cell_clicked(self): #определение номера столбца и строки для ячейки |
Рис. 14. Функция для корректировки ячейки таблицы tablewidget
Последние 4 строки используются для занесения во временные переменные значения выбранной строки.
Рис. 15. Заполнение новой строки (рис. 12, стр. 3)
Вставка строк из формы в таблицу
Бывает, что удобнее вставлять данные в форме. При этом будем заносить во временную таблицу с занесением в дальнейшем в основную таблицу. Для этого используем кнопку "Добавить строки в форме" по наименованию btn_dob. Кнопка вызывает функцию dob_str_form:
Рис. 16. Функция добавления строк
Для работы функции мы с помощью designer создадим новый класс TwoWindow(), аналогично , как и tabl (стр.1) . Назовем файл vvod_tabl. Аналогично создадим файл для конвертации conv_vvod_tabl.bat.
![]() |
Рис. 16 Форма в Designer
Опишем следующие виджеты."Наименование"-label_description, "Статья дохода/расхода"- label_doxod, "Сумма"- label_sum. Окно для ввода наименования- entry_description., для ввода "дохода/дохода"- Edit_dox. окно для суммы-Edit_sum. Для выбора "расхода/дохода" используется виджет Combobox- comboBox. Кнопка "Добавить"- btn_dob_vv, "Очистить ввод"- btn_ochist. Таблицу tablewidget назовем tablevv.
Рис. 17. Класс для добавления данных в форме
Здесь мы в заголовок вставили аналогично vvod_tabl.Ui_MainWindow.
Создадим код для ввода данных.
Рис.18.
Так как после занесения во временную таблицу данных и закрытия формы данные в таблице tablewidget пропадают. Поэтому приходится использовать 2-х мерную матрицу. TwoWindow.mat=[]- объявление массива. Так как мы ее создали в классе TwoWindow, и будем использовать в другом классе, то она должна иметь имя созданного класса.
В третьей строчке (рис. 18) вызывается функция onActivated(self, text), которая заносит из Combobox выбранное значение в окно Edit_dox для получения типа операции (доход/расход). Текст функции приведен на рис. 19:
def onActivated(self, text): #используется в combobox для получения значения в Edit |
Рис. 19. Функция для занесения выбранного значения из combobox в окно ввода.