如何用QSettings存储Python字典

2024-05-23 17:21:59 发布

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

下面的代码使用QSettings对象存储Pythondata字典。 读回字典后,它的所有键都是QString,如下所示:

{PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}

我想知道是否可以用这样的常规字符串键来阅读字典:

^{pr2}$

代码:

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

settings = QtCore.QSettings('apps', 'settings')

data = {'one': 1, 'two': 2}

settings.setValue('data', data)

data = settings.value('data').toPyObject()
print data

Tags: 对象字符串代码data字典settingsone常规
2条回答
original = {PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
converted = {str(k): val for k, v in original.items()}
  • Python2

不可能直接把它们转换成普通字典。在

d = {}
for k, v in data.items():
    d[str(k)] = v

完整代码:

^{pr2}$

输出:

{'two': 2, 'one': 1}
  • Python3

此问题不存在,因为它返回常规字典,因此不再需要使用toPyObject()进行转换。在

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

settings = QtCore.QSettings('apps', 'settings')

data = {'one': 1, 'two': 2}

settings.setValue('data', data)

data = settings.value('data')
print(data)

输出:

 {'one': 1, 'two': 2}

相关问题 更多 >