2017-08-19 7 views
2
from tkinter import * 

WIDTH = 800 
HEIGHT = 950 
RAD = 20 
SPEED = 30 

class mainHero(): 
    def __init__(self): 
     self.image = PhotoImage(file="darth_vader.png") 
     self.imageSize = [112,180] 
     self.right_side = WIDTH/2+self.imageSize[0]/2 
     self.left_side = WIDTH/2-self.imageSize[0]/2 
     self.obj = canv.create_image((WIDTH/2,HEIGHT-self.imageSize[0]/2), image = self.image) 
    def move(self, event): 
     if event.keysym == "Right": 
      if self.right_side+SPEED<WIDTH: 
       canv.move(self.obj, SPEED, 0) 
       self.right_side += SPEED 
       self.left_side += SPEED 
     if event.keysym == "Left": 
      if self.left_side-SPEED>0: 
       canv.move(self.obj, -SPEED, 0) 
       self.right_side -= SPEED 
       self.left_side -= SPEED 
     print(self.left_side, self.right_side) 

root = Tk() 
root.title("YeGame") 
root.minsize(width = WIDTH, height = HEIGHT) 
root.maxsize(width = WIDTH, height = HEIGHT) 
canv = Canvas(root,width =WIDTH,height = HEIGHT, bg="green") 
canv.create_rectangle(0, 0, WIDTH%SPEED-1, HEIGHT, fill = "yellow") 
canv.create_rectangle(WIDTH-WIDTH%SPEED+1, 0, WIDTH, HEIGHT, fill = "yellow") 
m = canv.create_image((100,100), image = PhotoImage(file="smallnight.gif")) 
canv.pack() 
canv.focus_set() 
me = mainHero() 
canv.bind("<KeyPress>", me.move) 
root.mainloop() 

このコードはゲームを作成する必要があります。しかし、ダース・ベイダーをキャンバスで見ることができるのはなぜか分かりませんが、キャンバスの背景を見ることはできません。それは空間のイメージでなければならない。 Darth Vaderを追加するコードは機能しますが、背景を追加するコードは機能しません。私が正しい方法でそれをやり遂げる方法を教えてください。 PhotoPythonで背景を表示する際のトラブル。キャンバス

答えて

1

画像は、あなたがミスター・ベイダーのために上に行ったようcreate_imageを呼び出す前に宣言する必要があります。

root = Tk() 
root.title("YeGame") 
root.minsize(width = WIDTH, height = HEIGHT) 
root.maxsize(width = WIDTH, height = HEIGHT) 
canv = Canvas(root,width =WIDTH,height = HEIGHT, bg="green") 
canv.create_rectangle(0, 0, WIDTH%SPEED-1, HEIGHT, fill = "yellow") 
canv.create_rectangle(WIDTH-WIDTH%SPEED+1, 0, WIDTH, HEIGHT, fill = "yellow") 
background = PhotoImage(file="smallnight.gif") 
m = canv.create_image((100,100), image = background) 
canv.pack() 
canv.focus_set() 
me = mainHero() 
canv.bind("<KeyPress>", me.move) 
root.mainloop() 
+0

私は(我々は両方のケースでは光画像オブジェクトを与える)の違いを理解することはできませんが、おかげで、それが動作します) –

関連する問題