La clase Canvas de Tkinter admite funciones que se utilizan para mover objetos de una posición a otra en cualquier lienzo o nivel superior de Tkinter.
Sintaxis: Canvas.move(canvas_object, x, y)
Parámetros:
canvas_object es cualquier imagen o dibujo válido creado con la ayuda de la clase Canvas. Para saber cómo crear un objeto usando la clase Canvas, tome como referencia esto .
x es la distancia horizontal desde la esquina superior izquierda.
y es la distancia vertical desde la esquina superior izquierda.
Usaremos class para ver el funcionamiento del método move().
Parámetros de clase-
Miembros de datos usados:
maestro
x
y
lienzo
rectángulo
Funciones de miembro usadas:
movimiento()
izquierda()
derecha()
arriba()
abajo()
Widgets usados: Canvas
Método Tkinter usado:
Canvas.create_rectangle()
pack()
Canvas.move()
after()
enlazar()
A continuación se muestra la implementación de Python:
Python3
# imports every file form tkinter and tkinter.ttk from tkinter import * from tkinter.ttk import * class GFG: def __init__(self, master = None): self.master = master # to take care movement in x direction self.x = 1 # to take care movement in y direction self.y = 0 # canvas object to create shape self.canvas = Canvas(master) # creating rectangle self.rectangle = self.canvas.create_rectangle( 5, 5, 25, 25, fill = "black") self.canvas.pack() # calling class's movement method to # move the rectangle self.movement() def movement(self): # This is where the move() method is called # This moves the rectangle to x, y coordinates self.canvas.move(self.rectangle, self.x, self.y) self.canvas.after(100, self.movement) # for motion in negative x direction def left(self, event): print(event.keysym) self.x = -5 self.y = 0 # for motion in positive x direction def right(self, event): print(event.keysym) self.x = 5 self.y = 0 # for motion in positive y direction def up(self, event): print(event.keysym) self.x = 0 self.y = -5 # for motion in negative y direction def down(self, event): print(event.keysym) self.x = 0 self.y = 5 if __name__ == "__main__": # object of class Tk, responsible for creating # a tkinter toplevel window master = Tk() gfg = GFG(master) # This will bind arrow keys to the tkinter # toplevel which will navigate the image or drawing master.bind("<KeyPress-Left>", lambda e: gfg.left(e)) master.bind("<KeyPress-Right>", lambda e: gfg.right(e)) master.bind("<KeyPress-Up>", lambda e: gfg.up(e)) master.bind("<KeyPress-Down>", lambda e: gfg.down(e)) # Infinite loop breaks only by interrupt mainloop()
Producción:
En el código anterior se utilizan instrucciones de impresión adicionales para mostrar el funcionamiento correcto del método move() . La palabra clave keysym (Tkinter reservado) se usa para imprimir qué tecla del teclado se presiona.
Publicación traducida automáticamente
Artículo escrito por sanjeev2552 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA