PyQt5不将设置保存到ini文件

2024-06-07 07:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

对于应用程序,我需要读/写.ini文件中的值。我在windows7上使用python3和pyqt5,得到了一个小例子:

import os
from PyQt5.QtCore import QSettings

ini_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文件中。所以,我想我错过了什么?在


Tags: 文件intestimport应用程序forsettingsini
1条回答
网友
1楼 · 发布于 2024-06-07 07:02:58

您必须调用^{}方法以便保存值:

...

for k, v in inidict.items():
    settings.setValue(k, v)

settings.sync() # < -

上述内容已在文件中明确指出:

void QSettings::sync()

Writes any unsaved changes to permanent storage, and reloads any settings that have been changed in the meantime by another application.

This function is called automatically from QSettings's destructor and by the event loop at regular intervals, so you normally don't need to call it yourself..

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

相关问题 更多 >