如何使用 QSettings 存储 Python 字典
How to store Python dictionary with QSettings
下面的代码使用 QSettings
对象存储 Python data
字典。
读回字典后,它的所有键都像 QString
一样:
{PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
我想知道是否可以使用像这样的常规字符串键来阅读字典:
{'one': 1, 'two': 2}
代码:
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
- Python2
直接不可以,你必须将它们转换成普通字典。
d = {}
for k, v in data.items():
d[str(k)] = v
完整代码:
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()
d = {}
for k, v in data.items():
d[str(k)] = v
print(d)
输出:
{'two': 2, 'one': 1}
- Python3
这个问题不存在,因为它 returns 你是一个普通的字典,不再需要用 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}
original = {PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
converted = {str(k): val for k, v in original.items()}
下面的代码使用 QSettings
对象存储 Python data
字典。
读回字典后,它的所有键都像 QString
一样:
{PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
我想知道是否可以使用像这样的常规字符串键来阅读字典:
{'one': 1, 'two': 2}
代码:
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
- Python2
直接不可以,你必须将它们转换成普通字典。
d = {}
for k, v in data.items():
d[str(k)] = v
完整代码:
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()
d = {}
for k, v in data.items():
d[str(k)] = v
print(d)
输出:
{'two': 2, 'one': 1}
- Python3
这个问题不存在,因为它 returns 你是一个普通的字典,不再需要用 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}
original = {PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
converted = {str(k): val for k, v in original.items()}