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