gpt4 book ai didi

python - 保存包含 pyqt 对象的类数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:27 25 4
gpt4 key购买 nike

我正在构建一个 PyQt 应用程序,我是 Python 的初学者。假设我将一个 obj 项存储在定义的类中:

class Item (self):
def __init__(self, item_nbr, crop_pixmap, originepoint, designation):
self.item_nbr = item_nbr # integer
self.crop_pixmap = crop_pixmap # QPixmap
self.origin_point = originpoint # QPoint
self.designation = designation # str

然后我通过 GUI 执行其他操作并创建项目列表。如何保存此列表以便以后打开它? pickle 不适用于 QPixmap,我想保存一个。

最佳答案

您可以使用 QSettings保存所有应用程序数据。它会自动转换数据类型,如QPixmapQPointQColor等。默认情况下,设置保存在platform-independant way中。 , 但您也可以根据需要保存到自定义位置。

这里是你如何读/写你的 Item 类:

def settings(self):
# use a custom location
return QtCore.QSettings('app.conf', QtCore.QSettings.IniFormat)

def readSettings(self):
self.items = []
settings = self.settings()
for index in range(settings.beginReadArray('items')):
settings.setArrayIndex(index)
self.items.append(Item(
settings.value('number', -1, int),
settings.value('pixmap', None, QtGui.QPixmap),
settings.value('point', None, QtCore.QPoint),
settings.value('designation', '', str),
))

def writeSettings(self):
settings = self.settings()
settings.beginWriteArray('items')
for index, item in enumerate(self.items):
settings.setArrayIndex(index)
settings.setValue('number', item.item_nbr)
settings.setValue('pixmap', item.crop_pixmap)
settings.setValue('point', item.origin_point)
settings.setValue('designation', item.designation)
settings.endArray()

QSettings.value() 的 PyQt 版本允许您指定默认值和值的预期类型。

关于python - 保存包含 pyqt 对象的类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com