4

試してみました(しかし、何も起こりません)

    self.txt.SetBackgroundColour ((255,0,0))

タイトルで述べたように、背景色の StyledTextCtrl を変更しようとしています。誰かが使用できる方法を知っていますか? API ドキュメントを確認しましたが、見つけられなかったようです。 http://wxpython.org/docs/api/wx.stc.StyledTextCtrl-class.html

(背景色とは、もちろん、書き込み領域全体を意味します)

これを行う方法を知っている人はいますか?

編集:

次のコードでは背景は変わりません

import wx
import wx.stc

app = wx.App(redirect=True)
top = wx.Frame(None, title="StyledTXTCtrl", size=(300,200))
txt=wx.stc.StyledTextCtrl(top)
txt.SetBackgroundColour((255,255,0))
txt.Refresh()
top.Show()
app.MainLoop()
4

2 に答える 2

5

背景色が更新されず、呼び出しによって再描画が強制されたtxt.Refresh()wx.TextCtrl を使用した同様の経験があったため、私の最初の反応は呼び出しでした。Refresh()しかし、そのアプローチは間違っていたようです。

StyledTextCtrl APIを確認した後、必要なSetBackground()機能ではないようです。私の理解では、STC は同じボックスに複数のスタイルを持つことができるため、個々のテキスト スタイルが STC の設定よりも優先されます。

いくつかの調査の後、私はStyleSetBackground()関数を見つけました。これにより、背景が赤になるようにデフォルトのスタイルが変更され、効果的に背景が赤に設定されます。次のように呼び出す必要があります。

txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))

複数のスタイルを使用する場合は、スタイルごとにこのメソッドを呼び出さなければならない場合があることを覚えておいてください。

---編集---
テキストを入力してコード コードを確認するのを忘れていました。上記で提案したように呼び出しを行うだけの場合SyleSetBackground()、テキストを入力すると、入力されたテキストの背景は期待どおりの赤ではなく、まだ白であることがわかります。

もう少し調査したところ、背景色を設定した後に次のコードを呼び出すことで、これを簡単に修正できることがわかりました。

txt.StyleClearAll()

私の推測では、StyledTextCtrl を作成すると、テキスト スタイルが に等しく設定されwx.stc.STC_STYLE_DEFAULTます。ここまでは順調ですね。ただし、この時点で、(背景を赤にすることによって) デフォルト スタイルの値を変更するため、テキスト スタイルとデフォルト スタイルは異なります。したがって、StyleClearAll()を呼び出して、ALL STYLES をデフォルト スタイル (現在は赤い背景) にリセットする必要があります。

于 2012-06-03T01:51:58.757 に答える
2

これは私のコンピュータで問題なく動作します

self.txt.SetBackgroundColour((255,0,0))

あなたのOSは何ですか?

于 2012-06-02T23:35:38.480 に答える