在GUI(python)中覆盖yaml配置文件

时间:2016-08-03 19:21:21

标签: python file pyqt4 yaml config

我使用PyQt4实现了一个GUI界面。在我的GUI界面中,我有一个配置选项卡,用户可以在其中更改配置文件(使用行编辑)。我可以使用这些输入的值覆盖GUI中的yaml配置文件(我有加载,保存和覆盖的按钮),但是当这些变量实际用于其他模块时,它会从原始配置值中读取。这就是我在使用变量的模块中读取配置文件的方式:

with open("config.yaml", "r") as f:
    config = yaml.safe_load(f)

MIN_VOLTAGE = config['test1']['minVolt']
MAX_VOLTAGE = config['test1']['maxVolt']
MAX_CURR = config['test1']['maxCurr']

我的配置文件如下所示:

test1:
  maxCurr: 5
  maxVolt: 5
  minVolt: -5
test2:
  maxVolt: 8
  setCurr: 3

如何在不退出GUI的情况下使用新的配置值?

1 个答案:

答案 0 :(得分:0)

您可能不会更新值MIN_VOLTAGE。在编写YAML文件后MAX_VOLTAGEMAX_CURR,但您没有显示足够的代码来识别问题。

您编码加载YAML文件一次(可能在应用程序启动时),然后填充值。如果覆盖YAML文件,除非您手动修改它们或将YAML文件重新加载到这些值中,否则应用程序中的值不会自动更改。

一种理智的方法是将配置值存储在具有saveload方法的类中,然后使用其中的值,并在用户更改配置时更新它们。修改后调用save,应用程序启动时调用load