2010-03-15 85 views

回答

1

您可以使用control.GetBuffer()來獲取RichTextBuffer,並使用RichTextXMLHandler將緩衝區保存到流中,該流可以是任何文件類型對象,例如StringIO例如如果室溫是您的富文本控制

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

在這裏,你可以運行,看看它打印出XML,當您單擊框架之外的富文本CNTRL一個完整的例子

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

輸出:

<?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>