2010-03-15 6 views

Répondre

1

Vous pouvez utiliser control.GetBuffer() pour obtenir RichTextBuffer et utiliser RichTextXMLHandler pour enregistrer le tampon dans un flux, qui peut être n'importe quel objet de type fichier, par exemple. StringIO par exemple si la température ambiante est votre contrôle de texte riche

import cStringIO 
buf = cStringIO.StringIO() 
handler = wx.richtext.RichTextXMLHandler() 
handler.SetFlags(wx.richtext.RICHTEXT_HANDLER_INCLUDE_STYLESHEET) 
handler.SaveStream(rt.GetBuffer(), buf) 
print buf.getvalue() 

ici est un exemple complet que vous pouvez exécuter et voir imprime xml, lorsque vous cliquez sur cntrl texte en dehors riche dans le cadre

import wx 
import wx.richtext 

app = wx.App(False) 
f=wx.Frame(None, title="Test") 
f.Show() 
rt = wx.richtext.RichTextCtrl(f, size=(200,200)) 
def onEvent(evt): 
    import cStringIO 
    buf = cStringIO.StringIO() 
    handler = wx.richtext.RichTextXMLHandler() 
    handler.SetFlags(wx.richtext.RICHTEXT_HANDLER_INCLUDE_STYLESHEET) 
    handler.SaveStream(rt.GetBuffer(), buf) 
    print buf.getvalue() 

f.Bind(wx.EVT_LEFT_DOWN, onEvent) 
app.MainLoop() 

sortie:

<?xml version="1.0" encoding="UTF-8"?> 
<richtext version="1.0.0.0" xmlns="http://www.wxwidgets.org"> 
    <paragraphlayout textcolor="#101010" fontsize="10" fontstyle="90" fontweight="90" fontunderlined="0" fontface="Sans" alignment="1" parspacingafter="10" parspacingbefore="0" linespacing="10"> 
    <paragraph> 
     <text>sdsa</text> 
    </paragraph> 
    </paragraphlayout> 
</richtext>