Python Tkinter | Mover objetos usando el método Canvas.move()

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 


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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *