在 GUI 周围传递变量(使用全局变量)?

Passing variables around a GUI (using globals)?

我有一个使用 Tkinter 的短程序,有两个主要按钮:加载文件和 运行 进程。

加载文件创建四个列表,每个列表包含几千个对象。 运行 进程在这些列表上运行我的算法并为用户生成报告。

我的问题是:一般来说,这些列表应该放在哪里?现在我把它们作为全局变量,但正如我们总是被告知的那样,这是不好的做法。我感觉这是一个使用全局变量的合适地方,但是有更好的方法吗?

我的主要功能是:

def main():
    root.mainloop()

加载文件开始于:

def load_files():
    global key_map
    global ser_events
    global scada_events
    global beta_dict
    and then load the files...

运行 进程开始于:

def run_process():
    global ser_events
    global scada_events
    global beta_dict
    and then do the process stuff...

我建议查看 this site。此示例的设置方式,tkinter 应用程序是 class。您的 load_files()run_process() 函数将是 class 的函数,而不是使用全局变量(远离 python 中的全局变量!),变量将是 class 属性。

不幸的是,这将需要重写您的代码,但是它促进了良好的编程技术,并且您的代码将更加整洁和可读:)