Pergunta

Minha pergunta é se podemos salvar os itens no ListCtrl, para que toda vez que alguém abre o aplicativo, os itens estão lá e, se o usuário o remover, ele também remove da configuração. Sei que posso usar o wx.config e estou tentando fazer isso, mas não sei como lê -lo de maneira a realizar o que quero.

Então, o que eu gostaria de saber é uma maneira adequada de escrever/ler o wx.config de uma maneira que toda vez que alguém abre o aplicativo, os itens do listctrl estão lá.

Desde já, obrigado.

Foi útil?

Solução

Usando o wx.config é muito fácil, basta criar o nome de aprovação do seu aplicativo e adicionar dados, por exemplo,

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

Agora você pode ler a qualquer hora

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

Para salvar a lista de dados CNTRL, sugiro que você primeiro leia todos os dados em uma lista de python e picles que listam na configuração, na próxima vez que leia a configuração, descompacte dados e preencha a lista, a estrutura adiciona funções como Filllist/Savelist para que você possa ter certeza de que a leitura A peça de escrita está próxima e semelhante.

por exemplo, você pode usar este esqueleto

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top