我不需要在很长一段时间内进行任何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()
答案 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编写的通用对应文件,并且可以被黑客攻击以完成本机小部件无法完成的操作。