【问题标题】:wxPython - Save Items in ListCtrlwxPython - 在 ListCtrl 中保存项目
【发布时间】:2011-02-09 09:27:43
【问题描述】:

我的问题是我们是否可以将项目保存在 ListCtrl 上,这样每次有人打开应用程序时,项目就在那里,如果用户删除它,它也会从配置中删除。 我知道我可以使用 wx.Config 并且我正在尝试使用它来完成,但我不知道如何以某种方式阅读它来完成我想要的。

所以我想知道的是一种正确的写入/读取 wx.Config 的方法,即每次有人打开应用程序时,ListCtrl 中的项目都在那里。

提前致谢。

【问题讨论】:

    标签: python wxpython save items listctrl


    【解决方案1】:

    使用 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()
    

    【讨论】:

    • 嗯,是的,我知道你在那里写的 wx.Config 的基础知识,但其余的非常感谢!你帮了大忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多