wxPython - Speichern Sie Angebote im ListCtrl
Frage
Meine Frage ist, ob wir die Einzelteile auf ListCtrl sparen können so jedesmal, wenn jemand die Anwendung öffnet, sind die Elemente dort und wenn der Benutzer es entfernt, es entfernt auch aus der Konfiguration. Ich weiß, dass ich verwenden kann wx.Config und ich versuche, das zu erreichen verwenden, aber ich weiß nicht, wie es in einer Art und Weise zu lesen, zu erreichen, was ich will.
So was würde ich gerne wissen, ist eine richtige Art und Weise zu schreiben / die wx.Config in einer Art und Weise gelesen, dass jedesmal, wenn jemand die Anwendung geöffnet wird, werden die Elemente von ListCtrl sind.
Vielen Dank im Voraus.
Lösung
wx.Config ist sehr einfach, erstellen Sie einfach Config Namen der App vorbei und fügen Sie Daten z.
config = wx.Config("StackOverflowTest")
config.Write("testdata", "yes it works!")
Jetzt können Sie es jederzeit lesen
config = wx.Config("StackOverflowTest")
print config.Read("testdata")
Liste cntrl Speichern von Daten würde ich vorschlagen, dass Sie zuerst alle Daten in einer Python-Liste lesen und diese Liste in config-Beize, das nächste Mal gelesen config unpickle Daten und Bestücken-Liste, Struktur weise hinzufügen Funktionen wie FillList / Liste ansehen, so können Sie Lesen werden sicher Teil Schreiben sind in der Nähe und ähnliche.
z. Sie können dieses Skelett
verwendenimport 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()