| 12
 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() | 
Partager