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

Использование Designer

1 2 3 4 5 6

Запустим designer( его можно бесплатно скачать в интернете):

Работа с Designer

Рис.1

Нажмем на create и на форму занесем таблицу (tablewidget),кнопки (PushButton) из раздела слева Buttons:

Работа с qtablewidget b Designer

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

Сортировка столбцов в tablewidget

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

Создание таблицы в PyQt5

Рис.4 Просмотр таблицы в DB Browser

Таблица Finance будет находиться "внутри" файла data.sqlite базы data. Ее можно видеть только в обозревателе. Продолжим работу в Designer (рис.2). Назовем btn_0_insert_tab кнопку для добавления строки в таблице. Нажмемм на кнопку два раза и поставим жирный плюс:

выбор шрифта для виджетов

Рис. 5. Выбор шрифта для виджетов в Designer

Справа в Object Inspector найдем font и установим размер и жирность. У нас будет два вида работы- с таблицей Qtablewidget и работа с таблицей finance в базе данных.Для заголовка вида работы используем метки Label в разделе Display Widget (Слева):

Работа с Designer в Питон 3

Рис.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. Продолжение на следующей странице.

1 2 3 4 5 6