2010-04-18 3 views
2

Вопрос в том, можем ли мы сохранить элементы в ListCtrl, чтобы каждый раз кто-то открывал приложение, элементы там, и если пользователь удаляет его, он также удаляется из конфигурации. Я знаю, что я могу использовать wx.Config, и я пытаюсь это использовать, но я не знаю, как его прочитать, чтобы выполнить то, что я хочу.wxPython - сохранить элементы в ListCtrl

Так что я хотел бы знать, это правильный способ написать/прочитать wx.Config таким образом, что каждый раз, когда кто-то открывает приложение, элементы из ListCtrl есть.

Заранее спасибо.

ответ

3

Использование wx.Config очень просто, просто создайте конфигурационное имя для вашего приложения и добавьте данные, например.

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

Теперь вы можете прочитать его в любое время

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

Для сохранения списка CNTRL данных, которые я хотел бы предложить, что вы сначала прочитать все данные в списке питона и рассоле, что список в конфигурацию, в следующий раз прочитать конфиг, unickle data и populate list, структура wise добавляет такие функции, как fillList/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() 
+0

Ну да, я знал основы wx.Config как вы написали, но остальное спасибо большое! Ты много помогал! – user319706