Duda con wxpython mixins.listctrl

Israel Santana Alemán isra en miscorreos.org
Lun Nov 2 15:02:54 CET 2009


Buenas tardes,

Este es mi primer correo a la lista, me presento mi nombre es Israel y tengo
conocimiento (muy) básicos sobre python.

Me estaba adentrando en wxpython, y tengo un pequeño problema.

Tengo una listado de tipo mixins.listctrl y dibujo la lista, la cosa viene
cuando edito la lista desde la venta gráfica y quiero que se ordene por lo
valores nuevos, entiendo que en el ejemplo que envio, se hace por un
diccionario que ya he creado anteriormente, pero como puedo hacerlo de forma
que cada vez que modifique un dato se modifique el diccionario, o de la
forma que sea más correcta.

Muchas gracias

<codigo>
#!/usr/bin/python

# sorted.py

import wx
import sys
from wx.lib.mixins.listctrl import ColumnSorterMixin
from wx.lib.mixins.listctrl import TextEditMixin

actresses = {
1 : ('jessica alba', 'pomona', '1981'),
2 : ('sigourney weaver', 'new york', '1949'),
3 : ('angelina jolie', 'los angeles', '1975'),
4 : ('natalie portman', 'jerusalem', '1981'),
5 : ('rachel weiss', 'london', '1971'),
6 : ('scarlett johansson', 'new york', '1984')
}


class SortedListCtrl(wx.ListCtrl, ColumnSorterMixin, TextEditMixin):
    def __init__(self, parent):
        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
        TextEditMixin.__init__(self)
        ColumnSorterMixin.__init__(
self, wx.LC_SORT_ASCENDING|wx.LC_VIRTUAL)
        self.itemDataMap = actresses

    def GetListCtrl(self):
        return self

class Actresses(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(380, 230))

        hbox = wx.BoxSizer(wx.HORIZONTAL)

        panel = wx.Panel(self, -1)

        self.list = SortedListCtrl(panel)
        self.list.InsertColumn(0, 'name', width=140)
        self.list.InsertColumn(1, 'place', width=130)
        self.list.InsertColumn(2, 'year', wx.LIST_FORMAT_RIGHT, 90)

        items = actresses.items()

        for key, data in items:
            index = self.list.InsertStringItem(sys.maxint, data[0])
            self.list.SetStringItem(index, 1, data[1])
            self.list.SetStringItem(index, 2, data[2])
            self.list.SetItemData(index, key)

        hbox.Add(self.list, 1, wx.EXPAND)
        panel.SetSizer(hbox)

        self.Centre()
        self.Show(True)

app = wx.App()
Actresses(None, -1, 'actresses')
app.MainLoop()
</codigo>



-- 
Sin más, un saludo

Israel Santana (aka kamaxeon)
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es