为了账号安全,请及时绑定邮箱和手机立即绑定

PyQt5 不将设置保存到 ini 文件

PyQt5 不将设置保存到 ini 文件

子衿沉夜 2021-05-31 17:53:38
对于应用程序,我需要读取/写入 .ini 文件中的值。我在 windows7 上使用 python3 和 pyqt5 并得到了这个小例子:import osfrom PyQt5.QtCore import QSettingsini_str = """[mysection]key0=value0"""with open("test.ini", "w") as fi:    fi.write(ini_str)inidict = {    "mysection/key1" : "value1",    "myothersection/key2" : "value2"}settings = QSettings("test.ini", QSettings.IniFormat)for k in settings.allKeys():    print(k, settings.value(k))for k in inidict.keys():    settings.setValue(k, inidict[k])从我的 ini 文件中读取值有效,但设置值(如在第二个 for 循环中)不起作用,值不会保存到 ini 文件中。所以,我想我在这里遗漏了什么?
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您必须调用该sync()方法才能保存值:

...
for k, v in inidict.items():
    settings.setValue(k, v)
    settings.sync() # <---

以上在文档中明确指出:

void QSettings::sync()

将任何未保存的更改写入永久存储,并重新加载其他应用程序在此期间更改的任何设置。

这个函数会定期从 QSettings 的析构函数和事件循环中自动调用,所以你通常不需要自己调用它。

在前面的事情中,它表明此方法负责保留更改,并且如果使用 some 存在事件循环QXXXAplication.exec_(),则在析构函数中调用它,但在您的情况下没有它,因此您必须显式调用它。


查看完整回答
反对 回复 2021-06-06
  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信