1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| # -*- coding:iso-8859-15 -*-
import wx
class Contact(object):
def __repr__(self):
return "\n".join("%s: %s" % (k, v) for k, v in self.__dict__.items()
if not k.startswith('_'))
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.contacts = []
self.CreateWidgets()
self.DoLayout()
self.DoBinding()
self.Populate()
def CreateWidgets(self):
self.panel = wx.Panel(self, -1)
self.listview = wx.ListView(self.panel, -1)
self.textctrl = wx.TextCtrl(self.panel, -1,
style=wx.TE_MULTILINE | wx.TE_READONLY )
def DoLayout(self):
sizer = wx.GridBagSizer(5, 5)
sizer.Add(self.listview, (0, 0), flag=wx.EXPAND)
sizer.Add(self.textctrl, (0, 1), flag=wx.EXPAND)
sizer.AddGrowableCol(0)
sizer.AddGrowableCol(1)
sizer.AddGrowableRow(0)
self.panel.SetSizerAndFit(sizer)
def DoBinding(self):
self.listview.Bind(wx.EVT_LIST_ITEM_SELECTED, self.ShowContact)
def SetContacts(self, contacts):
self.contacts = contacts
self.Populate()
def Populate(self):
contacts = self.contacts
self.listview.ClearAll()
self.listview.InsertColumn(0, "les contacts")
for index, contact in enumerate(contacts):
listitem = self.listview.InsertStringItem(index, "%s %s" %
(contact.prenom, contact.nom))
self.listview.SetItemData(listitem, index)
def ShowContact(self, evt):
self.textctrl.Clear()
contact = self.contacts[evt.GetIndex()]
self.textctrl.SetValue(str(contact))
evt.Skip()
if __name__ == "__main__":
c1 = Contact()
c1.adresse = 'dans son bain'
c1.nom = 'lucke'
c1.prenom = 'lucky'
c2 = Contact()
c2.adresse = 'au saloon'
c2.telephone = "0102030405"
c2.nom = 'dalton'
c2.prenom = 'joe'
contacts = [c1, c2]
app = wx.PySimpleApp(redirect=False)
frame = MyFrame(None, -1, "test listview")
frame.Show(True)
frame.SetContacts(contacts)
app.MainLoop() |
Partager