Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Stratégie de sauvegarde pour une application PyQt

0 votes

J'ai une application PyQt dans laquelle j'effectue diverses opérations :
- Extraction et stockage en tableau de petites images
- Annotation sur des QPixmap (N°, traçage de cercle etc...)

Je me pose la question de la sauvegarde des données dans un seul fichier. Visiblement pickle ne marche pas sur les pixmap.
Je pensais tout mettre dans une liste ou dictionnaire et faire un pickle dessus mais ça marche pas.
J'hésite à stcoker toutes les opérations permettant de reconstituer la scène dans une classe et stocker les images ailleurs (bof)

Je ne trouve pas beaucoup de doc sur google sur le sujet, quelqu'un peut-il me conseiller ou m'aiguiller ?

demandé 12-Sep par JmiXIII (132 points)

Peux-tu préciser exactement ce que tu veux sauvegarder ? Les images ? Ou des annotations (c'est quoi ?) sur les images ?

1 Réponse

0 votes
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

réponse données sur stackoverflow :

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()

Du coup je fais une liste d'Item et hop.

Mon soucis maintenant c'est que je voudrais associer un QPixmap à ma liste d'item (et non l'inclure dans chaque élément de la liste), donc faut que je remette les mains dans le cambouis mais j'ai déjà la direction dans laquelle chercher.

Je peux continuer avec ma classe je saurai sauvegarder mes données.
Au pire je duplique où je la met dans le premier élément de la liste puis après vide, etc...

répondu 12-Sep par JmiXIII (132 points)
...