IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Le ListView, ça marche comment ?


Sujet :

wxPython

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Le ListView, ça marche comment ?
    Bonjour,

    Je me suis inspiré de la demo de wx pour faire un LISTVIEW :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     items = donneesListe.items()
            for key, data in items:
                self.ecrireLog(data)
                index = self.listView.InsertStringItem(sys.maxint, data[0])
                self.listView.SetStringItem(1, 1, data[1])
                self.listView.SetStringItem(2, 2, data[2])
                self.listView.SetItemData(index, key)
    Ca fonctionne mais je cherche à comprendre comment cela fonctionne :
    InsertStringItem ? SetItemData ? A quoi ca sert tout ça ?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    tu cherches comment trouver l'aide de wxPython? regarde ce post

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Merci pour ta réponse.

    Eh bien, je regarde toujours dans la doc. Mais le problème est la langue. Déjà "My taylor is rich", c'est un peu chaud pour moi; alors quand c'est bourré de termes informatiques en plus, c'est la cata...

    En fait, je recherchais plutôt un exemple, une autre façon de faire... (si cela existe !)

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    un exemple basique de ce que tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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()
    Les datas que tu passes à la listeview sont des longs (cf la doc) tu es donc obligé de gerer un index sur une liste par exemple, d'autres composantes wx utilisent les types natifs de python comme data, ce qui est un plus (directement en objet).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Génial !

    Excellent exemple. C'est exactement ce qu'il me fallait. Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ESB] Ca marche comment ?
    Par ego dans le forum Java EE
    Réponses: 13
    Dernier message: 21/10/2008, 15h03
  2. wx.ImageList, ca marche comment ?
    Par Ggamer dans le forum wxPython
    Réponses: 2
    Dernier message: 10/12/2007, 20h45
  3. [eclipse 3.2][RCP][status bar] Elle marche comment celle-là ?
    Par dahu88 dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 21/11/2006, 23h06
  4. [Listview][VB.Net] Comment implementer une édition ?
    Par lutin06 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/02/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo