wxpython - Сохранить элементы в listccrl
Вопрос
Мой вопрос, если мы сможем сохранить элементы на ListCtrl, поэтому каждый раз, когда кто-то открывает приложение, элементы там, и если пользователь удаляет его, он также удаляет из конфигурации. Я знаю, что я могу использовать wx.config, и я пытаюсь сделать это, но я не знаю, как прочитать его таким образом, чтобы сделать то, что я хочу.
Итак, что я хотел бы знать, это правильный способ написать / прочитать WX.config таким образом, чтобы каждый раз кто-то открыл приложение, элементы из ListCTRL есть.
Заранее спасибо.
Решение
Использование WX.config очень прост, просто создайте имя Config передачу вашего приложения и добавить данные, например,
config = wx.Config("StackOverflowTest")
config.Write("testdata", "yes it works!")
Теперь вы можете прочитать его в любое время
config = wx.Config("StackOverflowTest")
print config.Read("testdata")
Для сохранения списков данных CNTRL я бы предположил, что вы сначала прочитали все данные в списке Python, и сортировать этот список в конфигурации, в следующий раз прочитайте Config, неповторимый список и заполните список, структура WISE Add Add Functions, например, для заливки / Savelist Покупаемая часть находятся поблизости и похоже.
Например, вы можете использовать этот скелет
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()