J'ai trouvé seulement deux méthodes (SaveFile, LoadFile) qui enregistrent dans un fichier. Comment utiliser wxRichTextCtrl pour enregistrer des données XML directement dans une variable?enregistrer les données dans wxRichTextCtrl
1
A
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>