wxPython - Guardar elementos en ListCtrl
Pregunta
Mi pregunta es si podemos guardar los elementos en ListCtrl así que cada vez que alguien abre la aplicación, los artículos están allí y si el usuario lo elimina, sino que también elimina de la configuración. Sé que puedo usar wx.Config y yo estoy tratando de lograr usando eso, pero no sé cómo leerlo en una manera de lograr lo que quiero.
Así que lo que me gustaría saber es una forma correcta de escritura / lectura del wx.Config de manera que cada vez que alguien abre la aplicación, los artículos de ListCtrl están ahí.
Gracias de antemano.
Solución
El uso de wx.Config es muy fácil, basta con crear config pasando nombre de su aplicación y añadir los datos por ejemplo.
config = wx.Config("StackOverflowTest")
config.Write("testdata", "yes it works!")
Ahora se puede leer en cualquier momento
config = wx.Config("StackOverflowTest")
print config.Read("testdata")
Para guardar los datos de la lista CNTRL Yo sugeriría que lea primero todos los datos en una lista de pitón y de la salmuera que se lista en config, la próxima vez leer configuración, los datos unpickle y Rellenar lista, sabia estructura añadir funciones como FillList / saveList para que pueda Asegúrese de leer la escritura parte están cerca y similares.
por ejemplo. puede utilizar este esqueleto
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()