Bonjour à tous,
J'ai cherché à mettre dans une ''fenêtre de suivi'' les éléments suivants :
- Des informations avec des lignes de différentes couleurs.
- Des liens permettant de lancer des applications ou des liens internets.
J'ai trouvé sur la démo de wx le contrôle wx.richtext.RichTextCtrl qui est très puissant

Par contre j'ai passé un temps non négligeable pour faire ce que je voulais (surtout pour caler la fenêtre après un affichage).
Si cela intéresse certains, je vous propose donc cet exemple simplifié :

Alex


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
 
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Exemple de GUI avec RichTextCtrl
 
import wx
import wx.richtext
import os
 
 
class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.rtc_suivi = wx.richtext.RichTextCtrl(self, wx.ID_ANY)
        self.__set_properties()
        self.__do_layout()
        for i in range(5):
            self.aff(u"ligne simple\n")
            self.aff(u"ligne rouge\n","red")
            self.aff(u"http://www.google.fr/\n","url")
            self.aff(u"google\n","url","http://www.google.fr")
            self.aff(u"python\n","url",r"C:\Python27\python.exe")
            self.aff(u"#####################\n","green")
 
 
    def __set_properties(self):
        self.SetTitle("Test wx.richtext.RichTextCtrl")
        self.rtc_suivi.SetMinSize((300, 300))
        self.rtc_suivi.SetEditable(False)
 
        self.urlStyle = wx.richtext.TextAttrEx()
        self.urlStyle.SetTextColour(wx.BLUE)
        self.urlStyle.SetFontUnderlined(True)
        self.urlStyle.SetFontSize(8)
 
 
    def __do_layout(self):
        sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_1.Add(self.rtc_suivi, 0, 0, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
 
    def aff(self,texte,couleur="black",chemin=False):
        """ Affichage dans wx.richtext.RichTextCtrl 
            "texte" est le texte à afficher
            "couleur" est la couleur du texte au format wx,pour un lien mettre "url" 
            "chemin" est le chemin spécifié si différent du texte
        """
        self.rtc_suivi.MoveEnd()
        if couleur=="url":
            if not chemin:
                chemin=texte
            self.rtc_suivi.BeginStyle(self.urlStyle)
            self.rtc_suivi.BeginURL(chemin)
            self.rtc_suivi.WriteText(texte)
            self.rtc_suivi.EndURL();
            self.rtc_suivi.EndStyle();
            self.rtc_suivi.Bind(wx.EVT_TEXT_URL, self.OnURL)
        else:
            self.rtc_suivi.BeginTextColour(couleur)
            self.rtc_suivi.WriteText(texte)
            self.rtc_suivi.EndTextColour()
 
        last=self.rtc_suivi.GetLastPosition()
        self.rtc_suivi.ShowPosition(last)
 
    def OnURL(self, evt):
        """ Lancement du lien """
        os.startfile(evt.GetString())
 
if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, wx.ID_ANY, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()