wxPython:如何使用复选框更改textctrl中的字体颜色?

发布于 2024-12-22 10:10:13 字数 421 浏览 2 评论 0原文

我有一些这样的复选框

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”,我的 < 的字体颜色code>Textctrl 应更改为红色。

我用 if 语句尝试过,但它没有做任何事情

I have some checkboxes like this

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

behind every checkbox there's a TextCtrl like this

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

when I select the checkbox AND the value of my Textctrl is "0", the font color of my Textctrl should change to red.

I tried it with an if-statement but it doesn't do anything

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪荡不羁 2024-12-29 10:10:13

您可能必须将样式 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()

You may have to apply the style wx.TE_RICH to your TextCtrl to change the text color.

Tested:

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文