Глава 5. Разработка графического интерфейса
Взаимодействие пользователя с программой происходит через поля ввода и кнопки.
Поля ввода lineEdit и lineEdit_2 заполняются с клавиатуры или же с помощью диалогового окна, которое открывается при нажатии на кнопку «Дабавить файл».
Для реализации этого функционала используется функция open_file:
graphic.py
Значения переменных:
Если файл не оказался по указанному пути или же путь введен неверно, то сработает обработчик исключений try – except и в форме приложения появляется уведомление об ошибке:
graphic.py
Исключение IOError возникает, когда функция возвращает системную ошибку, включая сбои ввода-вывода, такие как «файл не найден» или «диск заполнен». Если ошибка не обнаружится, то путь передается в self.text (строка 3), а после используется для открытия файла функцией open(). Содержимое файла передается при помощи read() в строку line (строка 5). В строке 6 мы используем функцию output_values() из файла work_file, который разбивает строку на два списка x_1 и y_1, где хранятся координаты х и у, которые затем передаются обратно в функцию.
work_file.py
Чтобы график построился после нажатия кнопки, в основном классе добавляется строка:
graphic.py
Для работы с событиями PyQt5 имеет механизм сигналов и слотов. Сигналы и слоты используются для связи между объектами. Сигнал срабатывает тогда, когда происходит конкретное событие. Слот вызывается, когда срабатывает его сигнал. Инструкция QtCore.QObject.connect назначает обработчик сигнала clicked(), который генерируется при нажатии кнопки:
Так как спектральный комплекс не идеален и приборы имеют некоторую погрешность, то для отображения графика, максимально приближенного к реальным значениям, необходимо использовать аппаратную функцию.
Поправка на аппаратную функцию осуществляется при помощи следующего кода:
graphic.py
На данном этапе графический интерфейс способен выводит одновременно 2 графика в виджете. Для их различия используется метод mkPen. С его помощью можно регулировать: цвет, стиль пера и толщину линий.
pen3 = pyqtgraph.mkPen(color='b', style=QtCore.Qt.DashLine)
Итогом работы является готовый графический интерфейс, способный вывести 2 графика по координатам, записанным во внешнем файле, а так же осуществлять поправку на аппаратную функцию для первого графика.
без поправки на аппаратную функцию | с поправкой на аппаратную функцию |
Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!