ПИТОН 3 ДЛЯ НАЧИНАЮЩИХ. РАБОТА С QTABLEWIDGET В PyQt5. РЕДАКТИРОВАНИЕ ПОЛЕЙ, ВСТАВКА, УДАЛЕНИЕ, РЕДАКТИРОВАНИЕ ЯЧЕЕК. ИСПОЛЬЗОВАНИЕ DESIGNER.

Использование Designer для разработки кода

1 2 3 4 5 6

Необходимые стандартные функции для таблицы tablewidget

 

self.table.setHorizontalHeaderLabels(["ID", "", "Статья дохода/расхода", "Сумма"])#Наименование столбцов
self.table.setColumnWidth(0, 25); self.table.setColumnWidth(1, 240)# задание ширины столбцов
self.table.setColumnWidth(2, 200); self.table.setColumnWidth(3, 100)
self.table.cellClicked.connect(self.cell_clicked) #корректирование ячейки

Рис. 13.

В первой строке мы задаем названия столбцов. Вместо наименования-пробелы, т.к. наименование будет указываться на кнопке для сортировки по наименованию (рис. 2, стр.1).

Корректировка ячейки tablewidget

Корректирование ячейки в таблице tablewidget

Для копирования:

def cell_clicked(self): #определение номера столбца и строки для ячейки
global costsz,totalz,descriptionz,row,col
row = self.table.currentItem().row() #Номер строки корректируемой ячейки
col = self.table.currentItem().column() #Номер столбца корректируемой ячейки
idz = int(self.table.item(row,0).text()) #Запоминание значений полей
descriptionz= self.table.item(row,1).text() #корректируемой строки
costsz= self.table.item(row,2).text()
totalz= self.table.item(row,3).text()

Рис. 14. Функция для корректировки ячейки таблицы tablewidget

Последние 4 строки используются для занесения во временные переменные значения выбранной строки.

Заполнение ячеек

Рис. 15. Заполнение новой строки (рис. 12, стр. 3)

Вставка строк из формы в таблицу

Бывает, что удобнее вставлять данные в форме. При этом будем заносить во временную таблицу с занесением в дальнейшем в основную таблицу. Для этого используем кнопку "Добавить строки в форме" по наименованию btn_dob. Кнопка вызывает функцию dob_str_form:

Добавление строк из формы

Рис. 16. Функция добавления строк

Для работы функции мы с помощью designer создадим новый класс TwoWindow(), аналогично , как и tabl (стр.1) . Назовем файл vvod_tabl. Аналогично создадим файл для конвертации conv_vvod_tabl.bat.

Форма для ввода данных в таблицу tablewidget

Рис. 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:

функция занесения из Combobox

def onActivated(self, text): #используется в combobox для получения значения в Edit
self.Edit_dox.setText(text)

Рис. 19. Функция для занесения выбранного значения из combobox в окно ввода.

Продолжение на следующей странице1 2 3 4 5 6