2010-04-18 46 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