Глава 5. Разработка графического интерфейса

Взаимодействие с пользователем и построение графиков


Взаимодействие пользователя с программой происходит через поля ввода и кнопки.


Поля ввода lineEdit и lineEdit_2 заполняются с клавиатуры или же с помощью диалогового окна, которое открывается при нажатии на кнопку «Дабавить файл».

Для реализации этого функционала используется функция open_file:

graphic.py


Значения переменных:

* - заголовок.
. / - указывает на директорию ( в нашем случае путь, где лежит проект)
TXT Files ( *.txt) - файловый фильтр

Если файл не оказался по указанному пути или же путь введен неверно, то сработает обработчик исключений 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(), который генерируется при нажатии кнопки:

clicked— событие, которое мы хотим привязать.
connect() — метод, который привязывает событие к вызову переданной функции.

Так как спектральный комплекс не идеален и приборы имеют некоторую погрешность, то для отображения графика, максимально приближенного к реальным значениям, необходимо использовать аппаратную функцию.

Поправка на аппаратную функцию осуществляется при помощи следующего кода:

graphic.py


На данном этапе графический интерфейс способен выводит одновременно 2 графика в виджете. Для их различия используется метод mkPen. С его помощью можно регулировать: цвет, стиль пера и толщину линий.

pen3 = pyqtgraph.mkPen(color='b', style=QtCore.Qt.DashLine)

Итогом работы является готовый графический интерфейс, способный вывести 2 графика по координатам, записанным во внешнем файле, а так же осуществлять поправку на аппаратную функцию для первого графика.



без поправки на аппаратную функциюс поправкой на аппаратную функцию

Посмотрель полный листинг файла graphic.py

Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!

От кого:
Ваш комментарий будет виден всем пользователям