Hola, estoy aprendiendo a programar en Python y he intentado hacer un "juego" utilizando Tkinter, pero el problema es que sólo se ve la ventana vacía y no se "dibuja" lo que quiero, o bien se dibuja pero no se muestra el resultado del código que hay a continuación, pero no sé dónde está el error. Por ejemplo, con el código:
from Tkinter import *
ventana = Tk()
ventana.title("Mi juego")
lienzo = Canvas(ventana, width = 400, height = 400)
lienzo.pack()
triangulo = lienzo.create_polygon(10, 10, 10, 60, 50, 35)
ventana.mainloop()
lienzo.move(triangulo, 50, 30)
ventana.update()
Este código, si lo ejecuto como script .py, sólo muestra el triángulo en la primera posición y no se mueve, mientras que si lo voy escribiendo en consola, funciona perfectamente. Como pensé que tal vez el problema era el mainloop(), he hecho algunas pruebas quitando 'ventana.mainloop()', pero luego la ventana ni siquiera aparece, o cambiándolo de lugar, y nada. Siempre me da un error, distinto según los cambios, del tipo: '_tkinter.TclError: invalid command name ".#########"'; donde ######### es un número.
Como he dicho, lo que estoy intentando hacer es un juego (de naves, se tiene que controlar una nave para hacerla aterrizar sobre una plataforma); es la primera vez que utilizo Tkinter y mi primer intento de juego. Además, me estoy guiando un poco por un script para PythonG para crear un juego muy similar mientras improviso con la documentación para adaptarlo a Tkinter. Por eso es muy probable que haya errores bastante graves. Si queréis ver el código completo de mi intendo de juego, aquí está:
Mi intento de juego. Las variables y los comentarios están en catalán, espero que no os suponga un problema.
Además, tengo otra duda: ¿cómo puedo hacer que, al pulsar una tecla, se ejecute un trozo de código? Por el momento, había puesto algo del estilo:
if ventana.onkey("Up"):
mi código
if ventana.onkey("Left"):
mi código 2
Pero no creo que esto funcione. ¿Cómo se tendría que hacer? Algo como: 'if ventana.onkey() == "Up"', ¿podría funcionar?
Aún estoy aprendiendo a programar, así que no he utilizado funciones ni clases (todo eso del 'def' y tanto 'self' que he visto en muchos scripts aún me suena a chino), y pensé que podría hacer un juego tan sencillo sin tener que crear funciones, aunque si es imposible ya volveré a modificar el código más adelante cuando sepa más.
Muchas gracias por vuestra ayuda, agradezco cualquier comentario respecto a mi (mal hecho) código.