gpt4 book ai didi

python - 如何在继承 wx.Frame 的类之外的类中创建 staticBitmap

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:11 26 4
gpt4 key购买 nike

我的应用程序具有以下结构:

class GameWindow(wx.Frame):
imageFile = r"C:\Users\Trufa\Desktop\pyll\img\ball.png"
data = open(imageFile, "rb").read()
stream = cStringIO.StringIO(data)
bmp = wx.BitmapFromImage(wx.ImageFromStream(stream))
image = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.ball = wx.StaticBitmap(self, -1, image, (0, 0), (image.GetWidth(), image.GetHeight()))
self.ball.Center()

if __name__ == '__main__':
app = wx.App()
GameWindow(None, title='Pyll')
app.MainLoop()

这个简化版本按预期工作,创建球,然后将其居中。

现在我已经尝试了各种方法,但无法解决以下问题:我想在单独的类中创建球及其方法,如下所示:

class Ball:
#Code to make the ball
def move(self):
self.ball.Center()

首先,这是一个很好的方法,我应该尝试留在 GameWindow 类中,我认为我会受益于将 Ball 概念抽象为一个类。

无论如何,这怎么能做到呢。我确信 Ball 类必须从某人那里继承,但我不确定从谁那里继承。

我尝试从 GameWindowwx.Frame 继承,但没有任何好的结果,但我不确定我是否在概念上做错了或者正在编程这是错误的,并且由于我缺乏对 Python 中的编程类和 OO 的了解,所以无法做到这一点。

总而言之,我想要这样的东西:

class Ball():#What should I inherit from?
imageFile = r"C:\Users\Trufa\Desktop\pyll\img\ball.png"
data = open(imageFile, "rb").read()
stream = cStringIO.StringIO(data)
bmp = wx.BitmapFromImage(wx.ImageFromStream(stream))
image = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.ball = wx.StaticBitmap(self, -1, image, (0, 0), (image.GetWidth(), image.GetHeight()))
def move(self):
self.ball.Center()

最佳答案

您真正需要做的就是子类化 wx.StaticBitmap。至少,这是我对你想做的事情的理解。这是一个简单的例子:

import wx

########################################################################
class Ball(wx.StaticBitmap):
""""""

#----------------------------------------------------------------------
def __init__(self, parent, imageFile):
"""Constructor"""
wx.StaticBitmap.__init__(self, parent=parent)
image = wx.Image(imageFile, wx.BITMAP_TYPE_ANY)
self.SetBitmap(wx.BitmapFromImage(image))
self.Center()


########################################################################
class GamePanel(wx.Panel):
""""""

#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)

sizer = wx.BoxSizer(wx.VERTICAL)
self.ball = Ball(self, "ball.png")
sizer.Add(self.ball, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)

########################################################################
class GameWindow(wx.Frame):

#----------------------------------------------------------------------
def __init__(self, title):
""""""
wx.Frame.__init__(self, None, title=title, size=(400,400))
panel = GamePanel(self)
self.Show()


#----------------------------------------------------------------------
if __name__ == '__main__':
app = wx.App()
GameWindow('Pyll')
app.MainLoop()

关于python - 如何在继承 wx.Frame 的类之外的类中创建 staticBitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com