wxPython: Как изменить цвет шрифта в textctrl с помощью флажка? - PullRequest
3 голосов
/ 21 декабря 2011

У меня есть несколько флажков, подобных этому

self.myCB = wx.CheckBox(panel, id=02, label="someString", pos=(20, 25))

позади каждого флажка есть TextCtrl, как это

self.myTC = wx.TextCtrl(panel, value=" 0", id=self.myCB.GetId(), pos=(320, 25), size = wx.Size(80, 20))

, когда я выбираю флажок И значение моего Textctrlравно «0», цвет шрифта моего Textctrl должен измениться на красный.

Я пробовал это с if заявлением, но он ничего не делает

1 Ответ

4 голосов
/ 22 декабря 2011

Возможно, вам придется применить стиль wx.TE_RICH к вашему TextCtrl, чтобы изменить цвет текста.

Протестировано:

import wx

class Main(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        self.text = wx.TextCtrl(self, wx.NewId(), style=wx.TE_RICH)
        self.check = wx.CheckBox(self, wx.NewId(), 'Make text red if 0')
        self.check.Bind(wx.EVT_CHECKBOX, self.onCheck)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text, 0)
        sizer.Add(self.check, 0)
        self.SetSizerAndFit(sizer)
        self.Show()

    def onCheck(self, evt):
        value = self.text.GetValue()
        if self.check.IsChecked() and value == '0':
            self.text.SetForegroundColour(wx.RED)
        else:
            self.text.SetForegroundColour(wx.BLACK)

app = wx.App(0)
Main(None, -1, 'Checkbox')
app.MainLoop()
...