2010-03-15 82 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>