Wxpython 是否可以更改wx.按钮';标签文本颜色

Wxpython 是否可以更改wx.按钮';标签文本颜色,wxpython,macos-catalina,Wxpython,Macos Catalina,[MacOS Catalina] 我对wxPython完全不了解。我正在通过各种在线教程学习使用wxPython,但我遇到了一个无法找到答案的问题 由于我在Mac电脑上使用“暗模式”,按钮的标签文本呈现为白色。这使得它们很难阅读,我更希望文本是黑色的。但是,我还没有找到任何解释如何使用wx.button执行此操作的方法。我所能找到的最接近的答案表明,可以使用类似于SetOptions(button\u color=sg.color\u System\u DEFAULT)的方法设置系统选项,但是我

[MacOS Catalina]

我对wxPython完全不了解。我正在通过各种在线教程学习使用wxPython,但我遇到了一个无法找到答案的问题

由于我在Mac电脑上使用“暗模式”,按钮的标签文本呈现为白色。这使得它们很难阅读,我更希望文本是黑色的。但是,我还没有找到任何解释如何使用wx.button执行此操作的方法。我所能找到的最接近的答案表明,可以使用类似于
SetOptions(button\u color=sg.color\u System\u DEFAULT)
的方法设置系统选项,但是我目前无法确定应用该设置的对象

是否有办法更改
wx.按钮的
标签
属性的颜色

我的代码非常简单:

  import wx

  class MyFrame(wx.Frame):
      def __init__(self):
          super(wx.Frame, self).__init__(parent=None, title='Hello World')
          panel = wx.Panel(self)

  #        wx.SetOptions(button_color=sg.COLOR_SYSTEM_DEFAULT)


          self.text_ctrl = wx.TextCtrl(panel, pos=(5, 5))
          self.text_ctrl.SetBackgroundColour((255, 255, 255, 255))

          font = wx.Font(10, family = wx.FONTFAMILY_MODERN, style = 0, weight = 90,
                        underline = False, faceName ="", encoding = x.FONTENCODING_DEFAULT)
    
          my_btn = wx.Button(panel, label='Press Me', pos=(5, 55))
          my_btn.SetFont(font)
          my_btn.SetBackgroundColour((255, 0, 0, 255))
          my_btn.SetForegroundColour((255, 0, 0, 255))
  #        my_btn.SetDefaultStyle(wx.TextAttr(wx.RED))
  #        my_btn.AppendText("Red text\n")
  #        my_btn.SetDefaultStyle(wx.TextAttr(wx.NullColour, wx.LIGHT_GREY))
  #        my_btn.AppendText("Red on grey text\n")
  #        my_btn.SetDefaultStyle(wx.TextAttr(wx.BLUE))
  #        my_btn.AppendText("Blue on grey text\n")

          self.Show()

  if __name__ == '__main__':
      app = wx.App()
      frame = MyFrame()
      app.MainLoop()
注释掉的行表示到目前为止我已经尝试过的一些事情

编辑 下面的答案适用于Python3,但使用Python2,我得到以下结果:

使用按钮的
setownforegroundcolor
,例如:

import wx

class MainFream(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None,title='test',size=(500,500), style=wx.DEFAULT_FRAME_STYLE)
        self.MainPanel = wx.Panel(self)

        test = []
        button_id = []
        for i in range(1,21):
            test.append(i)
            button_id.append(wx.NewId())

        self.button = []
        for i in range(len(test)):
            self.button.append(wx.Button(self.MainPanel,button_id[i],label=(str(test[i]))))
            self.button[i].Bind(wx.EVT_BUTTON, self.OnButton)

        self.button[2].SetOwnForegroundColour(wx.RED)
        self.button[9].SetOwnForegroundColour(wx.GREEN)
        self.button[12].SetOwnForegroundColour("brown")
        self.button[16].SetOwnForegroundColour("cadetblue")

        sizer = wx.FlexGridSizer(0, 5, 5, 5)
        for i in self.button:
            sizer.Add(i, 0, wx.ALL, 0)
        self.MainPanel.SetSizer(sizer)

    def OnButton(self, event):
        Id = event.GetId()
        Obj = event.GetEventObject()
        print ("Button Id",Id)
        print ("Button Pressed:",Obj.GetLabelText())

if __name__ == '__main__':
    app = wx.App()
    fream = MainFream()
    fream.Show()

    app.MainLoop()

您是否尝试将
wx.color
对象传递给
setForeGroundColor()
方法?e、 g.:
my_btn.setforegroundcolor(wx.color(255,0,0))
谢谢。这适用于Python3,但使用Python2不会产生相同的结果。@gone-Whoops!你不会说蟒蛇会发生什么。也许有一个解决方案,但我不再把python2放在我的机器上。我可能还需要补充一些注意事项,根据您使用的是Gtk2还是Gtk3,行为可能会有所不同,而且行为也可能取决于您为桌面选择的
主题。(StaticBox对我来说是个麻烦,我更喜欢它的主题)