【问题标题】:Overwrite yaml config file in GUI (python)在 GUI (python) 中覆盖 yaml 配置文件
【发布时间】:2016-12-09 16:07:44
【问题描述】:

我已经使用 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 的情况下使用新的配置值?

【问题讨论】:

  • 使用yaml有什么意义?使用QSettings会简单得多。
  • 为什么我的方法不起作用?

标签: python file pyqt4 yaml config


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2013-10-18
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多