Файл: Разработка проекта для визуализации данных на языке Python.doc
Добавлен: 24.10.2023
Просмотров: 150
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
В работе были использованы следующие компоненты PyQt:
-
окно; -
надпись; -
командная кнопка; -
однострочное текстовое поле; -
раскрывающийся список; -
менеджер компоновки; -
таблица.
Создание и управление окном производится посредством класса QWidjet. QWidjet является базовым классом для всех компонентов, поэтому любой компонент, не имеющий родителя будет обладать собственным окном[5].
Надпись – элемент, содержащий текст, может применяться для информирования, вывода подсказок, содержания html-текста и т.д., реализуется классом QLabel. В данной программе используется для подписей полей в окне добавления записи в БД.
Командная кнопка реализуется с помощью класса QPushButton. При нажатии на командную кнопку создается сигнал, при получении которого указанная в методе connect( ) функция выполняет содержащиеся в ней инструкции. В данной программе используется для запуска функций удаления, добавления, редактирования записей и поиска.
Однострочное текстовое поле предназначено для ввода и редактирования текста небольшого объема, реализуется классом QLineEdit[5]. В данной программе используется для ввода строки, по которой будет осуществляться поиск и для ввода значений новой записи.
С помощью класса QComboBox реализуется раскрывающийся список, предоставляющий возможность выбора элемента. В данной программе используется для выбора условий поиска по диапазону.
Класс QGridLayout позволяет выровнять элементы в окне по сетке. В данной программе используется для расположения элементов в обоих окнах.
Таблица реализуется с помощью класса QTableView. Позволяет отобразить данные из БД, не нарушая их структуры. В данной программе используется для визуализации данных БД и их редактирования путем ввода нового значения в ячейку.
2 Разбор кода программы
1 – 3 строки: подключение модулей sys, QtCore и QtGui, SQLite3, которые необходимы для создания приложения, использования элементов графического интерфейса, использования sql-команд при работе с БД; 4 строка: создание объекта приложения; 5 – 6 строки: создание соединения с базой данных example.db и объекта Cursor для работы с БД (рисунок 1).
Рисунок 1
7 – 9 строки: функция, заполняющая ячейку таблицы текстом, где входные параметры имя таблицы GUI, индекс ячейки и текст (рисунок 2).
Рисунок 2
10 – 14 строки: функция, получающая текст из ячейки таблицы или пустую строку при отсутствии текста в ячейке, где входные параметры имя таблицы GUI и индексы ячейки (рисунок 3).
Рисунок 3
15 – 21 строки: функция, заполняющая таблицу значениями из таблицы текущей БД, где входные параметры имя таблицы в БД, имя таблицы GUI, количество полей (столбцов) в таблице, j – счетчик строк, i – счетчик столбцов, row – выборка всех записей из таблицы БД (рисунок 4).
Рисунок 4
23 строка: создание класса, который будет содержать операции для кнопок; 24 – 34 строки: инициализация входящих параметров класса – имя таблицы GUI, имя текстового поля, количество столбцов, имена раскрывающихся списков, имя таблицы текущей БД, списки с именами полей в БД и именами полей в таблице GUI, строка типа ‘?,?,…,?’ с количеством записей, имя ключевого поля; 35 и 36 строки: получение текущего количества записей в БД (рисунок 5).
Рисунок 5
37 строка: создание функции в классе Operation для добавления записи, где arg – список значений новой строки; 38 и 45 строки: отключение сортировки на время добавления записи; 39 строка: создание новой строки в таблице GUI; 40 – 42 строки: добавление записи в БД и сохранение изменений; 43 и 44 строки: заполнение новой строки GUI соответствующими значениями из arg (рисунок 6).
Рисунок 6
46 строка: создание функции в классе Operation для удаления записи; 47 и 48 строки: получение индекса выбранной строки и текста ключевого поля; 49 строка: удаление строки из таблицы GUI; 50 – 52 строки: удаление строки из таблицы БД и сохранение изменений (рисунок 7).
Рисунок 7
53 – 58 строки: функция в классе Operation для внесения изменения в запись, где входящие параметры индексы изменяемой ячейки; функция вносит изменения в запись БД в соответствии с изменением значений в ячейках таблицы GUI и сохраняет изменения (рисунок 8).
Рисунок 8
59 – 69 строки: функция в классе Operation для поиска строк, производит поиск по вхождению подстроки в строку, отображает только те строки GUI, в ячейках которых нашлась искомая подстрока, остальные строки скрывает; k – флажок для строк, которые нужно отобразить; i – счетчик строк; j – счетчик столбцов (рисунок 9).
Рисунок 9
70 – 72 строки: функция в классе Operation, сбрасывающая результаты поиска, отображает все строки в таблице GUI (рисунок 10).
Рисунок 10
73 строка: создание функции в классе Operation, которая будет проводить поиск по диапазону; k – флажок для строк, которые нужно отобразить; i – счетчик строк; t – значение, по которому проводится сравнение; t2 – значение ячейки, с которой проводится сравнение; 76 – 78 строки: определение номера столбца, по которому проводится сравнение, имя столбца выбирается пользователем в раскрывающемся списке cbox2, выбор знака сравнения выбирается пользователем в раскрывающемся списке cbox1; 79 – 86 строки: отображение всех строк GUI, значения ячеек которых по выбранному столбцу меньше указанного значения; 87 – 94 строки: отображение всех строк GUI, значения ячеек которых по выбранному столбцу больше заданного значения (рисунок 11).
Рисунок 11
97 строчка: создание функции, которая будет создавать модальное окно для добавления новой записи; 98 – 101 строчки: функция, которая считывает введенные в текстовые поля значения, вызывает функцию добавления записи класса Operation, передает в нее список значений и закрывает модальное окно (рисунок 12)
Рисунок 12
102 – 136 строки: тело функции Ins; 102 – 104 строки: создание модального окна, блокирующего основное; 105 и 122 – 135 строки: создание табличной разметки окна и размещение в ней элементов; 106 – 111 строки: создание текстовых полей для ввода значений новой записи; 112 – 117 строки: создание надписей, которые будут указывать названия колонок таблицы для текстовых полей; 118 – 121 строки: создание кнопки и установка вызова функции Ins0 на ее нажатие, после чего функция Ins0 запустит функцию добавления записи в таблицы БД и GUI; 136 строка: отображение модального окна (рисунок 13).
Рисунок 13
138 – 141 строки: задание стартовых параметров БД – список имен колонок на русском языке, список имен полей БД, количество полей в БД, имя таблицы БД, текущее количество записей в БД (рисунок 14).
Рисунок 14
145 и 146 строки: создание основного окна для таблицы; 146 – 151 строки: создание и заполнение таблицы GUI, установка размеров ячеек и самой таблицы; 152 строка: включение встроенной в таблицу GUI сортировки по столбцам (рисунок 15).
Рисунок 15
153 – 163 строки: создание кнопок для управления таблицей (рисунок 16).
Рисунок 16
164 – 166 строки: создание раскрывающегося списка для выбора знака сравнения при поиске по диапазону; 167 – 169 строки: создание раскрывающегося списка для выбора столбца для поиска по диапазону; 170 строка: создание текстового поля для ввода значения для поиска (рисунок 17).
Рисунок 17
171 – 182 строки: создание табличной разметки окна и размещение в ней элементов; 183 строка: автоматическая установка размеров окна с учетом содержимого (рисунок 18).
Рисунок 18
184 строка: создание экземпляра класса Operation с нужными входными параметрами; 185 – 189: вызов функций по щелчку соответствующих им кнопок; 190 – 192 строки: вызов функции изменения соответствующих записей в БД при изменении ячейки таблицы с индексами i, j (рисунок 19).
Рисунок 19
193 строка: отображение основного окна; 194 строка: функция модуля sys для завершения программы; 195 строка: сохранение всех изменений в БД; 196 строка: закрытие соединения с БД (рисунок 20).
Рисунок 20
Заключение
В процессе работы были выявлены и рассмотрены основные особенности языка программирования Python:
-
программное обеспечение; -
высокая скорость разработки; -
переносимость программ; -
библиотеки; -
широкие возможности применения; -
расширяемость; -
удобство использования; -
встроенные типы данных -
возможности использования классов.
В работе были рассмотрены основы подключения к базам данных и взаимодействия с ними. Описаны основные методы и SQL-команды для создания базы данных, соединения с ней, сохранения результатов транзакций и закрытия соединения, удаления, добавления и редактирования записей, осуществления различных выборок из базы данных.
Так как написанная без графического интерфейса программа не актуальна на данный момент, необходимо было выбрать библиотеку графического интерфейса для написания программы. В результате проведенного сравнения двух разных GUI для языка Python – PyQt и Tkinter – выявлены преимущества библиотеки Qt, которая и была выбрана для написания графического интерфейса. Преимущества PyQt:
-
большая база компонентов; -
красивый внешний вид компонентов; -
хорошая документация; -
универсальность.
В результате данной работы была написана программа на языке Python, реализующая визуальный интерфейс для готовой базы данных. Благодаря упрощенному синтаксису и структуре языка программа имеет относительно небольшой код – 197 строк. Программа реализована с использованием большого количества функций и одного пользовательского класса.
Программа имеет простой интерфейс, позволяющий легко выполнить требуемые операции над базой данных. Он состоит одной таблицы, пяти управляющих кнопок, двух раскрывающихся списков и нескольких текстовых полей и надписей. Так же для удобства часть программы имеет собственное модально окно, блокирующее основное.
Программа позволяет выполнить следующие действия:
-
удалить выбранную запись одним кликом кнопки; -
добавить новую запись посредством модального окна и нажатия двух кнопок; -
изменить запись двойным щелчком по таблице; -
выполнить поиск по ключевому слову или значению одним кликом соответствующей кнопки; -
выполнить поиск по диапазону меньше или больше ключевого значения с помощью выбора двух условий поиска и одного клика соответствующей кнопки; -
выполнить сортировку по выбранному полю щелчком на заголовок поля в таблице.