0

簡単な例:

t.py

import wx
class MyFrame(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,parent,-1,title="my Frame",pos=(100,100),size=(300,400))
        panel=wx.Panel(self,-1)
        Text=wx.TextCtrl(panel,-1,"abc",size=(50,40),style=wx.TE_RICH2|wx.TE_MULTILINE)
        Text.SetDefaultStyle(wx.TextAttr("red"))

if __name__=='__main__':
    app=wx.App()
    frame=MyFrame(None)
    frame.Show()
    app.MainLoop()

システム:ubuntu 12.04。wx.TE_RICH2 を追加しましたが、wx.TextCtrl.SetDefaultStyle が機能しないのはなぜですか? ありがとう

4

1 に答える 1

0

問題は、メソッド SetDefaultStyle を使用する場合、呼び出す前に wx.TextCtrl オブジェクトにテキストが挿入されていないことが必要になることです。たとえば、wx.TextCtrl 宣言の「abc」を削除してから、アプリを実行すると動作するはずです。元:

import wx
class MyFrame(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,parent,-1,title="my Frame",pos=(100,100),size=(300,400))
        panel=wx.Panel(self,-1)
        # Notice no "abc" parameter
        Text=wx.TextCtrl(panel,-1,size=(50,40),style=wx.TE_RICH2|wx.TE_MULTILINE)
        Text.SetDefaultStyle(wx.TextAttr("red"))

if __name__=='__main__':
    app=wx.App()
    frame=MyFrame(None)
    frame.Show()
    app.MainLoop()

コードは今すぐ動作するはずです。TextCtrl オブジェクトに既にテキストが含まれている場合に使用される SetStyle() メソッドもありますが、ドキュメント ( http://docs.wxwidgets.org/trunk/classwx_text_ctrl.html )で述べられているように、このメソッドはあまり効率的ではありません。

于 2014-01-21T03:26:38.367 に答える