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