2010-04-18 45 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數據,我建議你先讀一個Python列表和鹹菜,列出爲配置的所有數據,下一次讀取配置,取消數據和填充列表,結構明智地添加像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 2010-04-19 16:19:58