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