2017-08-19 4 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() 

Ce code devrait créer un jeu. Mais je ne comprends pas pourquoi je peux voir Dark Vador sur Canvas mais je ne vois pas l'arrière-plan de Canvas. Ce devrait être l'image de l'espace. Le code qui ajoute Dark Vador fonctionne, mais le code qui ajoute l'arrière-plan ne fonctionne pas. Montre-moi s'il te plaît comment je peux le faire correctement. PhotoProblèmes avec l'affichage de l'arrière-plan sur Python. Toile

Répondre

1

L'image doit être déclarée avant d'appeler create_image comme vous l'avez fait ci-dessus pour monsieur Vader:

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

Je ne comprends pas (nous donnons objet PhotoImage dans les deux cas) différence, mais grâce, cela fonctionne) –