Python - 在模块之间更新configparser

时间:2014-07-16 15:45:04

标签: python pyqt updating configparser

我对python配置文件方法有很多疑问。

我正在使用GUI(PyQt)创建程序。该程序使用configparser模块从.cfg文件加载一些设置。用户可以使用用户首选项小部件从GUI编辑这些设置。关闭首选项窗口小部件时,会保存.cfg文件,但我不知道如何使用更新的设置值更新程序的其余部分。

我将尝试用一个例子来解释:

  1. 我启动了该程序。它创建一个名为 config 的ConfigParser()并读取 settings.cfg
  2. 程序从 config 检索选项' clock_speed '的值(假设它 5 )并设置 clkSpd = 5
  3. 我点击编辑 - >首选项并通过QSpinBox将时钟速度更改为 8
  4. 我关闭了首选项windget, settings.cfg 已保存,选项' clock_speed '的值现在 8
  5. 但在其模块中, clkSpd 5
  6. 我知道每次关闭“首选项”窗口时,我都可以加载设置,编辑它们,保存它们并重新加载所有设置。这很简单,但不是很漂亮。

    在读/写模式下,配置文件是否有经典且有效的方法?

    先谢谢。

2 个答案:

答案 0 :(得分:0)

尝试向首选项窗口小部件添加回调,以便在关闭时,任何更改的值都会传播回程序的其余部分。事件或信号处理like this overview可能适合您。

您还可能需要重新排列存储这些变量的位置,以便能够从回调中修改它们。这可能是全局变量的一个很好的应用程序,或者您可以查看this SO question以查看是否可以将变量传递到回调中以进行更新。

答案 1 :(得分:0)

如果您处于中间位置,更新应用程序的状态可能不是一件小事。举个例子:

  1. 您的应用=汽车
  2. 你启动你的应用程序=启动汽车
  3. 您在首选项中将变量 type_tyre 设置为 Winter
  4. 您正在运行的应用仍有 type_tyre 等于 Sommer
  5. 你在高速公路上行驶时试图更换轮胎
  6. 崩溃
  7. 在启动汽车之前更换轮胎这可能是一件非常安全的事情。

    因此,您只需编写一个例程,根据首选项的更改调整应用程序的状态,但这通常与初始化应用程序不同,具体取决于应用程序的当前状态。但是否则只需编写这样的例程并调用它。