在 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 属性。
不幸的是,这将需要重写您的代码,但是它促进了良好的编程技术,并且您的代码将更加整洁和可读:)
我有一个使用 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 属性。
不幸的是,这将需要重写您的代码,但是它促进了良好的编程技术,并且您的代码将更加整洁和可读:)