2012-09-03 45 views
6

¿Cómo se dibuja una imagen en una ventana de tkinter (estoy usando Python 3.3)? Estoy buscando una declaración que dibuje una imagen en una posición determinada en una ventana de tkinter.Cómo dibujar imágenes en la ventana de tkinter

sí ...

Cualquier respuesta sería apreciada. Y aquí está el código fuente del programa (si se puede llamar así) en el que quiero usar el código, en caso de que lo necesite.

from tkinter import * 

class craftClass(): 
    def __init__(self, x = 80, y = 80, xmotion = 0, ymotion = 0, health = 20): 
     self.xPos, self.yPos = x, y 
     self.dx, self.dy = xmotion, ymotion 
    def moveCraft(self): 
     self.xPos += self.dx 
     self.yPos += self.dy 

class missileClass(): 
    def __init__(self, x = 0 , y = 0): 
     self.xPos, self.yPos = x, y 

class alienClass(): 
    def __init__(self, x, y): 
     self.xPos, self.yPos = x, y 

    def moveForCraft(self, craftX, craftY): 
     if self.xPos < craftX: 
      self.xPos += 2 
     elif self.xPos > craftX: 
      self.xPos -= 2 
     else: 
      pass 

    if self.yPos < craftY: 
     self.yPos += 2 
    elif self.yPos > craftY: 
     self.yPos -= 2 
    else: 
     pass 

craft = craftClass() 
missileArray = [] 
alienArray = [] 

def keypress(event): 
    if event.keysym == 'Escape': 
     root.destroy() 
x = event.char 
if x == "w": 
    craft.dy = 1 
elif x == "s": 
    craft.dy = -1 
elif x == "a": 
    craft.dx = -1 
elif x == "d": 
    craft.dx = 1 
else: 
    print(x) 

root = Tk() 
print(craft.dx) 
while True: 
try: 
    root.bind_all('<Key>', keypress) 
    craft.moveCraft() 
    root.update() 
except TclError: 
    print("exited. tcl error thrown. llop broken") 
    break 

Soy muy consciente de que el espacio está en mal estado sorta, pero eso es algo que sucedió durante la copia

Respuesta

6

Usted tendrá que utilizar un widget Canvas para poner sus imágenes en (x, y) posiciones especificadas.

En Python 3, puede hacerlo de esta manera:

import tkinter 

tk = tkinter.Tk() 
can = tkinter.Canvas(tk) 
can.pack() 
img = tkinter.PhotoImg("<path/to/image_file>.gif") 
can.create_image((x_coordinate, y_coordinate), img) 

por favor que debido a Python 3 no tener una versión oficial PIL*, que se limitan a leer las imágenes de tipo GIF, PGM o PPM - si necesita otros tipos de archivos, marque this answer.

El widget Canvas es bastante potente, y le permite colocar sus imágenes, muestra lo que contiene una llamada "canvas.update" y eliminar un visualizador de elementos con una llamada "canvas.delete(item_id)". Compruebe su documentation.

Mientras Tkinter debería ser suficiente para que su juego simple, considere tomar un vistazo a Pygame, para un mejor soporte multimedia, o tal vez Pyglet, o incluso marco nivel multimedia superior llamada Kivy.

* (actualización): A partir de 2015, hay Almohada - un tenedor que es una gota en el reemplazo del proyecto PIL de edad, y que se reanudó el desarrollo adecuado del proyecto, incluyendo soporte para Python 3.x

0

Esto depende mucho del formato de archivo. Tkinter tiene una clase PhotoImage que se puede usar en Labels con bastante facilidad si su imagen es .gif. También puede agregarlos a widgets de lienzo con bastante facilidad. De lo contrario, es posible que desee utilizar PIL para convertir una imagen a PhotoImage.

2

El widget de tela es lo que hay que utilizar si desea dibujar algo con líneas, círculos, etc.

Cuestiones relacionadas