2017-07-17 19 views
0

wxPython 4.0.0a1(最新版)とPython 2.7でRichtextctrlを使用して簡単なアプリケーションを構築しました。Wxpython 4.0でRichTextXMLhandlerを使用してExportXMLとImportXMLを使用する

savestremメソッドを使用してrichtextxmlhandlerを使用してバッファ内容を保存しようとしましたが、最新バージョンのwxpython savestrem methonは使用できません。

so。 ExportXMLを使用しましたが、エラーが発生しています。リッチテキストのExportxmlの使用例は参考にしてください。

ありがとうございます。

答えて

0

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

あなたがここにセーブファイルについての詳細を読むことができます:

を私もここにこのトピックに関する私のブログの記事を更新:

+0

私はwxPython 4.0.0a1(Alpha版)を使用しています。私はあなたのブログの投稿から例を挙げてアプリケーションを作成しました。 https://www.blog.pythonlibrary.org/2015/07/10/wxpython-extracting-xml-from-the-texttctrlrl/ Savestremの代わりにRichTextXMLhandlerメソッドExportXMLを使用しました。それは私にとってはうまくいかない。 Richtextctrl SaveFileメソッドで を試しましたが、「テキストを保存できませんでした」というエラーが表示されます –

+0

私の悪いです。結局、wxPythonは実際にSaveStreamメソッドを削除しました。私はそれを忘れていた。とにかく、私はあなたが言及した記事だけでなく、私の答えを更新しました。私の答えはあなたがPython 3を使っていることを前提としていることに注意してください。そうでなければ、 'io'を取り除き、' StringIO'ビットを再追加する必要があります。 –

+0

、それは私のために働いています。あなたの答えと助けてくれてありがとう –

関連する問題