0

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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2019-04-29T22:00:35.893 回答