Le code ci-dessous stocke le dictionnaire Python data
en utilisant l'objet QSettings
. Après l'avoir lu de nouveau le dictionnaire est livré avec toutes ses clés comme QString
comme ceci:Comment stocker le dictionnaire Python avec QSettings
{PyQt4.QtCore.QString(u'one'): 1, PyQt4.QtCore.QString(u'two'): 2}
Je me demande s'il serait possible de lire le dictionnaire avec les clés de chaîne régulière comme celle-ci:
{'one': 1, 'two': 2}
code:
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
Il est possible de le faire en Python 2. Tout ce que vous devez faire est d'utiliser [sip.setapi] (http://pyqt.sourceforge.net /Docs/PyQt4/incompatible_apis.html) pour obtenir le même comportement que Python 3. Je ne sais pas pourquoi quelqu'un voudrait garder ces méchants 'QString' et' QVariant' types dans leur code. La conversion avec 'str()' est également buggée dans Python 2 - vous devriez toujours utiliser 'unicode()' pour effectuer la conversion afin d'éviter les erreurs de décodage/encodage. – ekhumoro