我是一名电气工程师,负责构建Python应用程序以与PSS / E(PTI Siemens的工程师用电源系统仿真)接口。该程序当前包含的代码工作方式包含一个main方法,该方法从我编写的两个类(在单独的文件中)中调用方法。在程序的各个不同步骤中,用户都通过终端与之交互(输入文件路径,按Enter继续,等等)。
我正在使用Tkinter实现GUI。用户将浏览以选择多个文件,选择某些选项,然后按“开始”。然后,用户将在程序的不同步骤与GUI交互,而不是键入终端。
在此程序中实现GUI的原理是什么?我在想,一方面,我可以为GUI创建一个文件,然后从该文件启动程序,然后在用户按下“开始”键时调用main方法。来自用户的选项/文件路径将作为参数传递给main方法。另一方面,我正在考虑将GUI集成到我的主要方法中。使用Tkinter小部件的类/方法创建一个单独的文件,并根据需要从main调用它们。其中哪一个(如果有的话)是最好的选择,为什么?我也有一个关于如何处理2020年1月“退役” Python 2.7的问题,因为我的代码依赖于2.7版本。我将在另一个问题中提出这个问题,以便对这个GUI问题进行详细说明。预先感谢您的输入。
答案 0 :(得分:1)
虽然可以将GUI程序编写为按您描述的方式工作的终端程序的直接端口,但通过主程序驱动与用户交互的流程,大多数GUI程序被编写为一组事件处理程序,也称为回调函数。因为事件循环正在使用您提供给它的处理程序来回调您。
通常,主程序只是声明您的控件,将它们绑定到处理程序,然后启动事件处理循环。
组织此类程序的方式有很多种,这在很大程度上取决于您的工作流程。
但是事件处理功能通常驱动整体逻辑,而不是主程序。这样一来,用户就可以以一种不太线性的方式与您的程序进行交互。
断开事件处理逻辑的耦合并创建一个“模型”通常是有用的,该模型表示程序的状态以及与GUI不相关的逻辑。然后事件处理程序将调用模型的函数或方法以更改程序的状态。