wxpython设置背景颜色_在wxpython中设置背景图像

在wxPython 3.0.0.0版本中,尝试为GUI设置背景图像遇到问题,背景仅显示默认灰色,而不是预期的图像。即使使用了正确的代码(包括绑定wx.EVT_ERASE_BACKGROUND事件),OnEraseBackground函数似乎并未执行。此问题在旧版本wxPython(如2.8.12.1)中未出现。
摘要由CSDN通过智能技术生成

我在wxpython有一些令人困惑的行为。我刚刚将最新版本(3.0.0.0)加载到了带有Python2.6.6的RHEL6.4中。在

大多数事情似乎都能正常工作,但我之前运行带有背景图像的gui的代码失败了。所有的按钮都可以工作,等等,但是背景只是默认的灰色。在

我试着从Mike Driscoll的python网站(http://www.blog.pythonlibrary.org/2010/03/18/wxpython-putting-a-background-image-on-a-panel/)上运行这个最小的示例来跟踪这个问题,但也遇到了同样的问题,除了默认的灰色背景外,没有其他背景显示(我以前在另一台使用wxpython[2.8.12.1]的旧版本的计算机上使用了他的示例,没有问题):import wx

########################################################################

class MainPanel(wx.Panel):

""""""

#----------------------------------------------------------------------

def __init__(self, parent):

"""Constructor"""

wx.Panel.__init__(self, parent=parent)

self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)

self.frame = parent

sizer = wx.BoxSizer(wx.VERTICAL)

hSizer = wx.BoxSizer(wx.HORIZONTAL)

for num in range(4):

label = "Button %s" % num

btn = wx.Button(self, label=label)

sizer.Add(btn, 0, wx.ALL, 5)

hSizer.Add((1,1), 1, wx.EXPAND)

hSizer.Add(sizer, 0, wx.TOP, 100)

hSizer.Add((1,1), 0, wx.ALL, 75)

self.SetSizer(hSizer)

self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)

#----------------------------------------------------------------------

def OnEraseBackground(self, evt):

"""

Add a picture to the background

"""

# yanked from ColourDB.py

dc = evt.GetDC()

if not dc:

dc = wx.ClientDC(self)

rect = self.GetUpdateRegion().GetBox()

dc.SetClippingRect(rect)

dc.Clear()

bmp = wx.Bitmap("butterfly.jpg")

dc.DrawBitmap(bmp, 0, 0)

########################################################################

class MainFrame(wx.Frame):

""""""

#----------------------------------------------------------------------

def __init__(self):

"""Constructor"""

wx.Frame.__init__(self, None, size=(600,450))

panel = MainPanel(self)

self.Center()

########################################################################

class Main(wx.App):

""""""

#----------------------------------------------------------------------

def __init__(self, redirect=False, filename=None):

"""Constructor"""

wx.App.__init__(self, redirect, filename)

dlg = MainFrame()

dlg.Show()

#----------------------------------------------------------------------

if __name__ == "__main__":

app = Main()

app.MainLoop()

现在,当我运行这个函数时,我没有发现任何错误,但是我确定onEraseBackground函数似乎从未运行过。我不知道这里出了什么问题;wxpython3.0.0.0是否停止允许这种图像背景设置过程?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值