PySide qsettings 返回 unicode

Posted

技术标签:

【中文标题】PySide qsettings 返回 unicode【英文标题】:PySide qsettings returns unicode 【发布时间】:2014-08-07 12:13:59 【问题描述】:

大家好,我在使用 Pyside 时遇到了 Qsettings 的问题。每当我尝试检索之前存储的列表时......我都会返回 unicode。我已经在网上搜索了这个问题,但似乎没有关于列表的解决方案。

【问题讨论】:

谢谢.. 我会试试的。这是我的代码: settings = QtCore.Qsettings() notes = settings.value('recent_note_list', []) print type(notes) >>>> 抱歉,这里没有看到您的评论。你也可以评论我的回答。无论如何,您不能在 QSettings 中存储任意 python 对象。许多语言都有 Qt 绑定,并且 QSettings 对不同的格式进行了抽象。如果您想存储高度复杂的数据,您可以先将其序列化为 JSON 并将其存储在单个值中。不过有点违背了 QSettings 抽象的目的。 【参考方案1】:

根据 PySide 文档,为了在 QSettings 对象中存储列表/数组,您需要这样做:

mylist = ['a', 'b', 'c']

settings = QSettings()
settings.beginWriteArray("mylist")
for idx, value in enumerate(mylist):
    settings.setArrayIndex(i)
    settings.setValue("key", value)

settings.endArray()

如图所示:http://srinikom.github.io/pyside-docs/PySide/QtCore/QSettings.html#PySide.QtCore.PySide.QtCore.QSettings.beginWriteArray

阅读:

mylist = []

settings = QSettings()
size = settings.beginReadArray("mylist")
for i in range(size):
    settings.setArrayIndex(i)
    mylist.append(settings.value("key"))

settings.endArray()

如图:http://srinikom.github.io/pyside-docs/PySide/QtCore/QSettings.html#PySide.QtCore.PySide.QtCore.QSettings.beginReadArray


也许您可以展示您的代码示例,以便我们提供更多帮助。

【讨论】:

以上是关于PySide qsettings 返回 unicode的主要内容,如果未能解决你的问题,请参考以下文章

PySide/PyQt5 QSettings 未保存到 HKEY_LOCAL_MACHINE

Qt - pyside - saveGeometry() saveState()

Qt - Pyside - .saveGeom() .saveState() (再次)

PySide2 findChild 不返回

QTextedit find() 总是返回 False (pyside2)

PyQt/Pyside - 也使用 valueChanged 返回先前的值