wxPython ベースのアプリケーションに、メニューからオンとオフを切り替えるテキスト ラッピング機能オプションを提供するつもりです (たとえば、notepad++ で許可されているように)。
私は wxTextCtrl を持っており、wxWidgets のドキュメントを読んで、テキスト ラッピング機能を提供するために TextCtrl::SetStyle( wxTextAttr( my_atributes )) で文字/段落スタイルを操作する必要があることを知りました。
メニュー項目ハンドラーで行う方法は次のとおりです。
def OnMenuWrapLines( self, evt):
current_style = wx.TextAttr()
self.TextCtrl.GetStyle( 0, current_style)
print "DBG: OnMenuWrapLines(): prev style = 0x%X" % current_style.GetFlags()
if evt.IsChecked():
current_style.SetFlags( current_style.GetFlags() & ~wx.TE_DONTWRAP | wx.TE_BESTWRAP)
else:
current_style.SetFlags( current_style.GetFlags() & ~wx.TE_BESTWRAP | wx.TE_DONTWRAP)
print "DBG: SetStyle(0x%x)=%d" % ( current_style.GetFlags(), self.TextCtrl.SetStyle( 0, self.TextCtrl.GetNumberOfLines(), current_style))
これは期待どおりに機能しません-スタイル自体は問題なく計算されますが、設定できません(この関数が入力されるたびに-スタイル値は同じで、変更された値は適用されません)。
wxMSW では、ラッピング スタイルは構築時にしか指定できないとどこかで聞きました (これは私にはオプションではありません)。この場合、任意の回避策を歓迎します。
前もって感謝します