2

私の質問は、ListCtrlにアイテムを保存して、誰かがアプリケーションを開くたびにアイテムがそこにあり、ユーザーがそれを削除すると、構成からも削除できるかどうかです。私はwx.Configを使用できることを知っており、それを使用して達成しようとしていますが、私が望むことを達成する方法でそれを読み取る方法がわかりません。

したがって、私が知りたいのは、誰かがアプリケーションを開くたびにListCtrlの項目がそこにあるように、wx.Configを読み書きする適切な方法です。

前もって感謝します。

4

1 に答える 1

3

wx.Configの使用は非常に簡単です。アプリの名前を渡す構成を作成し、データを追加するだけです。

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

今、あなたはいつでもそれを読むことができます

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

リストcntrlデータを保存するには、最初にPythonリスト内のすべてのデータを読み取り、そのリストをconfigにピクルスし、次にconfigを読み取り、データをアンピックしてリストにデータを入力し、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()
于 2010-04-19T04:27:19.900 に答える