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