以下是一个非常简单的演示,展示了如何将整数列表读取和写入到
QSettings
中。每次打开和关闭窗口时,演示都会自动添加一个新值。
如果您正在使用 PyQt,则完全不需要使用
json
。对于列表,只需提供默认值,并指定所包含的值的类型即可:
settings.value('finishcount', [], int)
示例:
from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
settings = QtCore.QSettings('my_org', 'my_app')
self._finishcount = settings.value('finishcount', [], int)
print('read settings: %s' % self._finishcount)
self._finishcount.append(len(self._finishcount))
def closeEvent(self, event):
settings = QtCore.QSettings('my_org', 'my_app')
settings.setValue('finishcount', self._finishcount)
print('save settings: %s' % self._finishcount)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(600, 100, 100, 100)
window.show()
sys.exit(app.exec_())
NB: 对于字符串列表的特殊情况,最好使用以下方法:
settings.value('finishcount', [], 'QStringList')
使用 str
指定类型不如不指定类型更好。否则,空列表将无法正确处理。
closeEvent
中保存设置,并在__init__
中读取设置。 - ekhumoro