RichTextCtrl
は、フェニックスでSaveStream
メソッドを削除しました。だから今、あなたはSaveFile
を使用する必要があります。
# wxPython Phoenix/Python 3 Version
import wx
import wx.richtext
from io import BytesIO
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Richtext Test')
sizer = wx.BoxSizer(wx.VERTICAL)
self.rt = wx.richtext.RichTextCtrl(self)
self.rt.SetMinSize((300,200))
save_button = wx.Button(self, label="Save")
save_button.Bind(wx.EVT_BUTTON, self.on_save)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.rt, 1, wx.EXPAND|wx.ALL, 6)
sizer.Add(save_button, 0, wx.EXPAND|wx.ALL, 6)
self.SetSizer(sizer)
self.Show()
def on_save(self, event):
out = BytesIO()
handler = wx.richtext.RichTextXMLHandler()
rt_buffer = self.rt.GetBuffer()
handler.SaveFile(rt_buffer, out)
self.xml_content = out.getvalue()
print(self.xml_content)
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
あなたがここにセーブファイルについての詳細を読むことができます:
を私もここにこのトピックに関する私のブログの記事を更新:
私はwxPython 4.0.0a1(Alpha版)を使用しています。私はあなたのブログの投稿から例を挙げてアプリケーションを作成しました。 https://www.blog.pythonlibrary.org/2015/07/10/wxpython-extracting-xml-from-the-texttctrlrl/ Savestremの代わりにRichTextXMLhandlerメソッドExportXMLを使用しました。それは私にとってはうまくいかない。 Richtextctrl SaveFileメソッドで を試しましたが、「テキストを保存できませんでした」というエラーが表示されます –
私の悪いです。結局、wxPythonは実際にSaveStreamメソッドを削除しました。私はそれを忘れていた。とにかく、私はあなたが言及した記事だけでなく、私の答えを更新しました。私の答えはあなたがPython 3を使っていることを前提としていることに注意してください。そうでなければ、 'io'を取り除き、' StringIO'ビットを再追加する必要があります。 –
、それは私のために働いています。あなたの答えと助けてくれてありがとう –