나는 여러 줄을 내가 그것을를 forground 그리고 strings.I을 작성하기위한 배경 색상이 다른 색상으로 다른 라인을 작성할 필요가 설정다른 전경 색상
wx.TextCtrl()
객체를 가지고
wx.TextCtrl.setForgroundcolor()
은 이전의 모든 선 색상도 변경합니다.이 방법이 있습니까?
나는 여러 줄을 내가 그것을를 forground 그리고 strings.I을 작성하기위한 배경 색상이 다른 색상으로 다른 라인을 작성할 필요가 설정다른 전경 색상
wx.TextCtrl()
객체를 가지고
wx.TextCtrl.setForgroundcolor()
은 이전의 모든 선 색상도 변경합니다.이 방법이 있습니까?
컬러 텍스트를 얻을 수 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
입니다.
당신은 기본 속성을 변경할 수 있습니다
#!/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 @ Joaquin; 나는 몰랐다. – Remi