Какая функция должна быть в сиденье водителя в приложении с графическим интерфейсом? - PullRequest
0 голосов
/ 30 апреля 2019

Я инженер-электрик, создающий приложение Python для взаимодействия с PSS / E (Power Systems Simulation for Engineers от PTI Siemens).Как работает код в настоящее время, программа содержит метод main, который вызывает методы из двух классов (в отдельных файлах), которые я написал.На всех этапах программы пользователь взаимодействует с ней через терминал (введите пути к файлам, нажмите Enter для продолжения и т. Д.).

Я работаю над реализацией графического интерфейса с Tkinter.Пользователь может выбрать несколько файлов, выбрать определенные параметры и нажать «Пуск».Затем пользователь будет взаимодействовать с графическим интерфейсом на разных этапах программы, а не вводить текст в терминал.

Какая философия использовалась бы для реализации GUI в этой программе?Я думаю, что, с одной стороны, у меня может быть файл для графического интерфейса пользователя, запуск программы из этого файла, а затем вызов метода main, когда пользователь нажимает кнопку «start».Опции / пути к файлам от пользователя будут переданы методу main в качестве параметров.С другой стороны, я думаю об интеграции GUI в мой основной метод.Создайте отдельный файл с классом / методами для виджетов Tkinter и при необходимости вызывайте их из main.Какой (если таковой имеется) из них будет лучшим путем и почему?У меня также есть вопрос о том, как поступить с Python 2.7, вышедшим в отставку в январе 2020 года, поскольку мой код зависит от версии 2.7.Я задам это в другом вопросе, чтобы дать некоторую разработку по этому вопросу GUI.Заранее спасибо за ваш вклад.

1 Ответ

1 голос
/ 30 апреля 2019

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

Обычно основная программа просто объявляет ваши элементы управления, связывает их с обработчиками и запускает цикл обработки событий.

Существуют различные способы организации такой программы, и она во многом зависит от вашего рабочего процесса.

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

Часто полезно отделить логику обработки событий и создать «модель», которая представляет состояние вашей программы и логику, не связанную с GUI. Затем обработчики событий будут вызывать функции или методы вашей модели, чтобы изменить состояние программы.

...