Python - 在模块间更新configparser
我对Python的配置文件处理方式有些困惑。
我正在创建一个有图形界面的程序(使用PyQt)。这个程序会通过configparser模块从一个.cfg文件中加载一些设置。用户可以通过图形界面的偏好设置小部件来编辑这些设置。当用户关闭偏好设置小部件时,.cfg文件会被保存,但我不知道如何用更新后的设置值来更新程序的其余部分。
我来举个例子说明一下:
- 我启动程序。它创建了一个名为config的ConfigParser(),并读取settings.cfg。
- 程序从config中获取选项'clock_speed'的值(假设是5),并将clkSpd = 5。
- 我点击编辑 -> 偏好设置,通过QSpinBox将时钟速度改为8。
- 我关闭偏好设置窗口,settings.cfg被保存,选项'clock_speed'的值现在是8。
- 但是在模块中,clkSpd仍然是5。
我知道我可以每次关闭偏好设置窗口时,重新加载设置,编辑它们,保存,然后再加载所有设置。这种方法简单,但看起来不太优雅。
有没有一种经典而有效的方式来处理可读写的配置文件呢?
提前谢谢你。
2 个回答
0
更新你应用的状态可能并不是一件简单的事情,尤其是在你已经开始使用它的时候。举个例子:
- 你的应用就像一辆车。
- 你启动应用就像你启动了车。
- 你在设置中把变量 type_tyre 设置为 Winter(冬季轮胎)。
- 但是你正在运行的应用里,type_tyre 仍然是 Sommer(夏季轮胎)。
- 你试图在高速公路上开车的时候换轮胎。
- 结果就是崩溃了。
而在启动车之前换轮胎可能是一件简单又安全的事情。
所以你需要写一个程序,让它根据设置的变化来调整应用的状态,但这和初始化应用是不同的,具体还要看应用当前的状态。不过,基本上你只需要写这样一个程序,然后调用它就行了。