wxPython SetBackgroundColour无法在OS X上运行

时间:2010-08-12 22:45:42

标签: python macos wxpython

我不需要在很长一段时间内进行任何GUI编程,所以我可能会在这里迟钝,所以如果这是一个愚蠢的问题,请耐心等待。我决定将wxPython用于一个小型的业余爱好项目,而我在更改主窗口的背景颜色方面遇到了麻烦。我在Snow Leopard上使用Python 2.6.2和wxPython 2.8.11.0。谁能告诉我这里我做错了什么?或者我偶然发现了某种错误?这是一个展示问题的小样本......

from wx import * 

class MainFrame(Frame):
    def __init__(self, parent, title):
        Frame.__init__(self, parent, title=title)

        self.Maximize()
        self.cdatabase = ColourDatabase()
        self.SetBackgroundStyle(BG_STYLE_CUSTOM)
        self.SetOwnBackgroundColour(self.cdatabase.Find('BLACK'))
        self.Show(True)
        self.ClearBackground()


app = App(False)
frame = MainFrame(None, 'a title')
app.MainLoop()

2 个答案:

答案 0 :(得分:1)

您对self.SetBackgroundStyle(BG_STYLE_CUSTOM)的致电似乎在我的系统上造成了麻烦,而且在我的测试中您根本不需要self.cdatabase = ColourDatabase()行。这段代码适用于我自己的事情:

from wx import * 

class MainFrame(Frame):
    def __init__(self, parent, title):
        Frame.__init__(self, parent, title=title)
        self.Maximize()
        self.SetOwnBackgroundColour('Black')
        self.Show(True)


app = App(False)
frame = MainFrame(None, 'a title')
app.MainLoop()

答案 1 :(得分:1)

使用wxPython需要记住的是,在大多数情况下,它会包含它所在平台的本机小部件。因此,如果Linux上的框架不支持更改其背景颜色,那么仅使用框架就无法实现。 (注意:我不知道哪个平台wx.Frame支持bg颜色更改)

应始终包含wx.Panel以获得一致的外观和感觉,以及使Tab键在子窗口小部件上正常工作。如果您希望能够完全控制应用程序的每个方面,则需要使用不同的工具包。顺便说一句,wxPython中的许多核心控件都有使用纯python编写的通用对应文件,并且可以被黑客攻击以完成本机小部件无法完成的操作。