wxPython - Salva elementi in ListCtrl
Domanda
La mia domanda è se siamo in grado di salvare gli elementi su ListCtrl così ogni volta che qualcuno apre l'applicazione, gli elementi ci sono e se l'utente lo rimuove, si rimuove anche dalla configurazione. So che posso usare wx.Config e sto cercando di realizzare con questo, ma non so come leggere in un modo per ottenere ciò che voglio.
Quindi quello che vorrei sapere è un modo corretto di scrittura / lettura del wx.Config in modo che ogni volta che qualcuno apre l'applicazione, gli elementi da ListCtrl ci sono.
Grazie in anticipo.
Soluzione
Utilizzando wx.Config è molto semplice, basta creare config passando nome della tua app e aggiungere i dati per es.
config = wx.Config("StackOverflowTest")
config.Write("testdata", "yes it works!")
Ora si può leggere in qualsiasi momento
config = wx.Config("StackOverflowTest")
print config.Read("testdata")
Per il salvataggio dei dati elenco CNTRL vorrei suggerire di leggere prima tutti i dati in un elenco di pitone e sottaceto che elenco in config, la prossima volta leggere config, deserializzare dati e la lista Popola, struttura saggia aggiungere funzioni come FillList / appunti in modo da poter assicurarsi lettura scrittura parte si trovano nelle vicinanze e simili.
es. è possibile utilizzare questo scheletro
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()