私のアプリの構造は次のとおりです。
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 クラスは誰かから継承する必要があると確信していますが、誰から継承したかはわかりません。
GameWindow
良い結果が得られwx.Frame
ずに継承を試みましたが、概念が間違っていたのか、プログラミングが間違っていたのかはわかりませんが、プログラミングクラスや一般的なオブジェクト指向に関する知識が不足しているため、それを行うことができませんでしたパイソンで。
要約すると、私は次のようなものが欲しいです:
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()