Bonjour,

Je rencontre un souci avec un wx.listCtrl depuis pas mal de temps... J'ai simplifié le code au max pour pouvoir vous le donner ici. Vous pouvez ainsi l'essayer facilement.

Le souci vient du sort() du listCtrl. Il donne une erreur :

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
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
 
import wx
 
class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, title="", style=wx.DEFAULT_FRAME_STYLE)
        self.panel = wx.Panel(self, -1)
        self.list_ctrl = ListCtrl(self.panel, -1)
 
class ListCtrl(wx.ListCtrl):
    def __init__(self, parent, id):
        wx.ListCtrl.__init__(self, parent, id, size=(180, -1), style=wx.LC_REPORT|wx.LC_NO_HEADER|wx.LC_HRULES|wx.LC_SINGLE_SEL|wx.SUNKEN_BORDER)
        self.parent = parent    
 
        self.InsertColumn(0, "")
        self.SetColumnWidth(0, 175)
 
        self.dictValues = {}
        self.dictValues[1] = u"Ok"
        self.dictValues[2] = u"Attention"
        self.dictValues[3] = u"Test"
 
        index = 0
        for key, value in self.dictValues.iteritems():
            self.InsertStringItem(index, value)
            self.SetItemData(index, key)
            index += 1
 
        # Tri dans l'ordre alphabétique
        self.SortItems(self.ColumnSorter)
 
    def ColumnSorter(self, key1, key2):
        item1 = self.GetItem( self.FindItemData(-1, key1), 0).GetText()
        item2 = self.GetItem( self.FindItemData(-1, key2), 0).GetText()
        if item1 < item2:
            return -1
        else:
            return 1
 
if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame = MyFrame(None)
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()
Merci de me dire si vous avez la même erreur et si vous en découvrez la cause !