Question

Ma question est de savoir si nous pouvons sauver les articles sur ListCtrl si chaque fois que quelqu'un ouvre l'application, les éléments sont là et si l'utilisateur supprime, il supprime également de la configuration. Je sais que je peux utiliser wx.Config et je suis en train d'accomplir à l'aide, mais je ne sais pas comment le lire d'une façon d'accomplir ce que je veux.

Alors, ce que je voudrais savoir est une bonne façon d'écrire / lire la wx.Config de manière à chaque fois que quelqu'un ouvre l'application, les articles de ListCtrl sont là.

Merci à l'avance.

Était-ce utile?

La solution

Utilisation wx.Config est très facile, il suffit de créer le nom qui passe config de votre application et ajouter des données par exemple.

config = wx.Config("StackOverflowTest")
config.Write("testdata", "yes it works!")

Maintenant, vous pouvez le lire à tout moment

config = wx.Config("StackOverflowTest")
print config.Read("testdata")

Pour la sauvegarde des données de cntrl liste Je vous suggère de lire d'abord toutes les données dans une liste python et Pickle cette liste dans config, config lire la prochaine fois, les données unpickle et la liste Populate, la structure ajouter sage des fonctions comme FillList / SaveList afin que vous puissiez faire partie de lecture d'écriture que sont à proximité et similaires.

par exemple. vous pouvez utiliser ce squelette

import wx
import cPickle

class MyListCtrl(wx.ListCtrl):

    def __init__(self, *args, **kwargs):
        wx.ListCtrl.__init__(self, *args, **kwargs)
        self.config = wx.Config("MykoolApp")

        self.fillist()

    def filllist(self):
         # load rows and check for error too, if no data
        data = self.config.Read("list_cntrl_data")
        rowList = cPickle.loads(data)

        for row in rowList:
            # add this row to list cntrl
            pass

    def savelist(self):
        rows = []
        for row in self:
            # add data to rows
            pass

        data =  cPickle.dumps(rows)
        self.config.Write("list_cntrl_data", data)

    def onchange(self):
        """
        on changes to list e.g. add delete call save list
        """
        self.savelist()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top