2

wx.TextCtrl要素に関する簡単な質問です。このテキストフィールドは、アプリケーション上で、ユーザーが文字列を追加できる場所にあります。赤いテキストが表示されたテキストフィールドが必要です。だから私はこのコードを生成しました:

self.hRepositoryTextfield = wx.TextCtrl(self.hPanel)
self.hRepositoryTextfield.SetDefaultStyle(wx.TextAttr(wx.RED))

ユーザーがこのテキストフィールドにフォントが適用された文字列(たとえば、黒い色の文字列、または特定のフォントの文字列)を赤い色でコピーした場合、とにかくデフォルトのスタイルは尊重されません。wx.TextCtrlに決定したスタイルは、常に設定に従って強制されます。どのようにできるのか?

前もって感謝します

アクセル

4

3 に答える 3

1

SetForegroundColor は、ある OS では機能し、別の OS では機能しない場合があります。ネイティブウィジェットに依存します。TextCtrl のスタイル フラグを wx.TE_RICH に設定します。例として wxPython デモをチェックしてください。HTMLCtrl の StyledTextCtrl または FancyText を使用することもできます。

于 2012-12-13T16:55:35.907 に答える
0

私はこの方法で問題を解決しました:

コードの最初の部分では、テキストフィールドのスタイルが定義されています...

self.hRepositoryTextfield.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
self.hRepositoryTextfield.SetFont(self.hFontLabel)
self.hRepositoryTextfield.Bind(wx.EVT_TEXT, self.forceDefaultStyle)

...次に、すべてのテキスト変更を強制スタイル関数にバインドします。

def forceDefaultStyle(self, event):
    hEventObject = event.GetEventObject()
    hEventObject.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
    hEventObject.SetFont(self.hFontLabel)

そしてそれは動作します!

于 2012-12-19T23:56:52.357 に答える
0
self.hRepositoryTextfield.SetForegroundColor(wx.RED)

それはうまくいくはずです....

于 2012-12-13T16:45:15.387 に答える