哪个功能应该在GUI应用程序的驱动程序中?

问题描述 投票:0回答:1

我是一名建立Python应用程序的电气工程师,用于与PSS / E(PTI Siemens的工程师的电力系统仿真)接口。代码当前的工作方式,程序包含一个main方法,它调用我编写的两个类(在单独的文件中)的方法。在整个程序的不同步骤中,用户通过终端与其交互(输入文件路径,按Enter继续等)。

我正在使用Tkinter实现GUI。用户将浏览以选择多个文件,选择某些选项,然后按“开始”。然后,用户将在程序的不同步骤与GUI交互,而不是键入终端。

用于在此程序中实现GUI的理念是什么?我在想,一方面,我可以为GUI创建一个文件,从该文件启动程序,然后在用户按下“start”时调用main方法。来自用户的选项/文件路径将作为参数传递给main方法。另一方面,我正在考虑将GUI集成到我的main方法中。有一个单独的文件,其中包含Tkinter小部件的类/方法,并根据需要从main调用它们。哪些(如果有的话)是最好的方法,为什么?我还有一个问题,关于如何处理在2020年1月“退役”的Python 2.7,因为我的代码依赖于2.7版本。我将在另一个问题中提出这个问题,以便对这个GUI问题进行一些阐述。提前感谢您的意见。

python-2.7 tkinter architecture psse
1个回答
1
投票

虽然可以将GUI程序编写为终端程序的直接端口,按照您的描述工作,但主程序驱动与用户交互的流程,大多数GUI程序被编写为一组事件处理程序,也称为回调函数。因为事件循环使用您提供给它的处理程序回调给您。

通常,主程序只声明您的控件,将它们绑定到处理程序,然后启动事件处理循环。

有各种方法来组织这样的程序,这在很大程度上取决于您的工作流程。

但事件处理函数通常驱动整体逻辑,而不是主程序。这允许用户以较不线性的方式与您的程序进行交互。

解耦事件处理逻辑并创建一个表示程序状态和与GUI无关的逻辑的“模型”通常很有用。然后事件处理程序将调用模型的函数或方法来更改程序的状态。

© www.soinside.com 2019 - 2024. All rights reserved.