wx.TextCtrl.setForgroundcolor()
、私はstrings.Iを書くためにそれがforgroundだ設定と背景色複数行
wx.TextCtrl()
オブジェクトが異なる色で異なる行を記述する必要があります持っています
は、すべての前の線の色も変更します。これには方法がありますか?
wx.TextCtrl.setForgroundcolor()
、私はstrings.Iを書くためにそれがforgroundだ設定と背景色複数行
wx.TextCtrl()
オブジェクトが異なる色で異なる行を記述する必要があります持っています
は、すべての前の線の色も変更します。これには方法がありますか?
色付きのテキストを取得するwx.Pythonにはいくつかの方法がありますとwx.ListCtrl
の色を設定することができます。あなたはそれらのすべての例を得ることができますwx.TE_RICH
と
wx.TextCtrl
、wx.TE_RICH2
スタイルwx.stc.StyledTextCtrl
wx.richtext.RichTextCtrl
wx.HtmlWindow
(テキストのカラータグを挿入する)wx.ListCrtl
〜で
たとえば、あなたがwx.TextCrtl
のどの部分で前部と背景色を変更することができ、電子wxPythonをデモ:
rtc = wx.richtext.RichTextCtrl(self, style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER)
rtc.BeginTextColour((255, 0, 0))
rtc.WriteText("this color is red")
rtc.EndTextColour()
rtc.Newline()
:
rt = wx.TextCtrl(self, -1,"My Text....",size=(200, 100),style=wx.TE_MULTILINE|wx.TE_RICH2)
rt.SetInsertionPoint(0)
rt.SetStyle(2, 5, wx.TextAttr("red", "blue"))
wx.richtext
は異なる色でラインを書くために使用することも簡単です。
他の回答に示されているように、wx.ListCrtl
の使用は、(複数行のテキストの代わりに)テキストの行を扱う場合、非常に厳しい方法となります。
wx.TextCtrl
の代わりに、wx.ListCtrl
があり、これは1行単位のインターフェイスを備えています。
あなたが基本的なプロパティを変更することができます挿入する前に、ラインのセットの色が必要な場合:ここで
ctrlText.SetDefaultStyle(wx.TextAttr(wx.GREEN,wx.BLACK))
#where wx.GREEN - foreground, wx.BLACK - background for text
ctrlText.SetBackgroundColour(wx.BLACK)
は一例です:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class ColorTextForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Colored text")
panel = wx.Panel(self, wx.ID_ANY)
self.log = wx.TextCtrl(panel, wx.ID_ANY, size=(100,100),
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL|wx.TE_RICH)
self.log.SetDefaultStyle(wx.TextAttr(wx.GREEN, wx.BLACK))
#self.log.SetBackgroundColour(wx.BLACK)
self.bgColor = wx.WHITE
self.log.SetBackgroundColour(self.bgColor)
btnRed = wx.Button(panel, wx.ID_ANY, 'Red')
btnGreen = wx.Button(panel, wx.ID_ANY, 'Green')
self.cbBG = wx.CheckBox(panel, label='White')
self.Bind(wx.EVT_BUTTON, self.onButtonRed, btnRed)
self.Bind(wx.EVT_BUTTON, self.onButtonGreen, btnGreen)
self.Bind(wx.EVT_CHECKBOX, self.onCheckChangeBG, self.cbBG)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.log, 1, wx.ALL|wx.EXPAND, 5)
sizer.Add(btnRed, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnGreen, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(self.cbBG, 0, wx.ALL|wx.CENTER, 5)
panel.SetSizer(sizer)
def onButtonGreen(self, event):
self.log.SetDefaultStyle(wx.TextAttr(wx.GREEN, self.bgColor))
self.log.AppendText("Geen\n")
def onButtonRed(self, event):
self.log.SetDefaultStyle(wx.TextAttr(wx.RED,self.bgColor))
self.log.AppendText("Red\n")
def onCheckChangeBG(self, e):
sender = e.GetEventObject()
isChecked = sender.GetValue()
if isChecked:
self.bgColor = wx.BLACK
self.cbBG.SetLabel('Black')
else:
self.bgColor = wx.WHITE
self.cbBG.SetLabel('White')
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = ColorTextForm().Show()
app.MainLoop()
結果:
実際にあなたがすることができます。 – joaquin
+1あなたの答え@ジョーキン;知りませんでした... – Remi