ПИТОН 3 ДЛЯ НАЧИНАЮЩИХ. РАБОТА С QTABLEWIDGET В PyQt5. РЕДАКТИРОВАНИЕ ПОЛЕЙ, ВСТАВКА, УДАЛЕНИЕ, РЕДАКТИРОВАНИЕ ЯЧЕЕК. ИСПОЛЬЗОВАНИЕ DESIGNER.
Использование Designer
Запустим designer( его можно бесплатно скачать в интернете):
Рис.1
Нажмем на create и на форму занесем таблицу (tablewidget),кнопки (PushButton) из раздела слева Buttons:
Рис.2. Вставка tablewidget в Desinger.
В Object inspector зададим кол-во строк=0 и кол-во столбцов=4. кол-во строк надо задать=0, т.к. при добавлении строки новая будет стоять 6-ой, если мы зададим кол-во строк=5. Кнопка "Сумма" не стоит на цифре 4, где будет указываться сумма, но после запуска программы она встанет на свое место.
Нам предстоит провести следующие операции с таблицей tablewidget:
1. Создание таблицы в базе данных для расчета финансовых операций finance.db
2. Вывод содержание полей таблицы Finance в таблицу qtablewidget
3. С помощью кнопок будем добавлять и удалять строки в таблице.
4.Корректировать строки непосредственно в таблице и в форме.
5. Занести отредактированную таблицу в таблицу базы данных, предварительно стерев старые данные.
В таблице, где будут название полей помещены кнопки для сортировки полей по наименованию и по сумме. Они будут в скрипте называться btn_head2 и btn_head4:
Рис.3. установка кнопок для сортировки столбцов
Таблица в базе данных будет состоять из 4-х полей- id-индекс, description-наименование операции, conts-доход или расход, total-сумма. Таблице дадим имя table. Количество строк м.б. =0.
Создадим таблицу finance в базе даных data:
from PyQt5 import QtSql #вызов класса QtSql для выполнения SQL запросов
con=QtSql.QSqlDatabase.addDatabase('QSQLITE') #соединение с базой формата SQLlite3
#тип базы данных и создание соединения. Метод .addDatabase возвращает экземпляр класса QSqlDatabase, представляющий базу данных, с которой установлено соединение
con.setDatabaseName('data.sqlite') setDatabaseName задает имя базы данных
con.open() #открытие соединения
query=QtSql.QSqlQuery() экземпляр класса QSqlQuery()
if 'finance' not in con.tables(): если таблица не создана:
query.exec("create table finance(id integer primary key autoincrement,\
description varchar(20),costs varchar(15),total real(12,3) )") создание таблицы методом exec. Обратный слеш "\"для переноса строки
Посмотрим созданную таблицу в DB Browser:
Рис.4 Просмотр таблицы в DB Browser
Таблица Finance будет находиться "внутри" файла data.sqlite базы data. Ее можно видеть только в обозревателе. Продолжим работу в Designer (рис.2). Назовем btn_0_insert_tab кнопку для добавления строки в таблице. Нажмемм на кнопку два раза и поставим жирный плюс:
Рис. 5. Выбор шрифта для виджетов в Designer
Справа в Object Inspector найдем font и установим размер и жирность. У нас будет два вида работы- с таблицей Qtablewidget и работа с таблицей finance в базе данных.Для заголовка вида работы используем метки Label в разделе Display Widget (Слева):
Рис.6. Использование метки LABEL в Designer
Также, как и для кнопки выберем шрифт и двойным щелчком наберем текст-"Работа с таблицей" . Подберем имена для других кнопок и метки с помощью Object inspector:
"-" btn_del, метку "Работа с таблицей" - rab_tabl, кнопку "Добавить строки в форме" - btn_dob, кнопку "Вставить строки из формы" - btn_insert_tabl, кнопку "Редактировать строку в форме" - btn_edit, "Ввод редактируемой строки из формы" - btn_iz_vv, метку "Работа с базой данных" - rab_base, кнопку "Занести в базу данных" - btn_zan_base, кнопку "Ввод в таблицу из базы" - btn_iz_base, кнопку добавления пустой строки btn_0_insert_tab, .кнопку для удаления строки btn_del. В коде программы придется использовать эти имена, поэтому надо постоянно держать открытым Designer. Продолжение на следующей странице.