对于应用程序,我需要读取/写入 .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() # <---
以上在文档中明确指出:
将任何未保存的更改写入永久存储,并重新加载其他应用程序在此期间更改的任何设置。
这个函数会定期从 QSettings 的析构函数和事件循环中自动调用,所以你通常不需要自己调用它。
在前面的事情中,它表明此方法负责保留更改,并且如果使用 some 存在事件循环QXXXAplication.exec_()
,则在析构函数中调用它,但在您的情况下没有它,因此您必须显式调用它。
添加回答
举报
0/150
提交
取消