如何使用鼠标移动Tkinter画布?

如何使用鼠标移动Tkinter画布?

Tkinter Canvas小部件是Tkinter库中功能最强大的小部件之一。它被用于创建不同的形状、图像和动画对象。我们可以使用 move() 方法在Canvas小部件上将图像向特定方向移动。

将图像和坐标定义为move(Image,x,y)方法中的参数,将对象在Canvas中移动。我们需要全局声明图像,以便于移动或更改它的位置。

我们可以按照以下步骤允许我们的图像在画布中移动,

  • 首先,定义Canvas小部件并将图像添加到其中。

  • 定义move()函数以允许图像在Canvas中动态变化。

  • 将鼠标按钮与允许在Canvas中移动图像的功能绑定。

示例

# 导入所需库
from tkinter import *
from PIL import Image, ImageTk

# 创建tkinter窗口实例
win = Tk()

# 设置tkinter窗口的大小
win.geometry("700x350")

# 定义Canvas小部件
canvas = Canvas(win, width=600, height=400, bg="white")
canvas.pack(pady=20)

# 将图像添加到Canvas小部件上
image = ImageTk.PhotoImage(Image.open('logo.png'))
img = canvas.create_image(250, 120, anchor=NW, image=image)

def left(e):
   x = -20
   y = 0
   canvas.move(img, x, y)

def right(e):
   x = 20
   y = 0
   canvas.move(img, x, y)

def up(e):
   x = 0
   y = -20
   canvas.move(img, x, y)

def down(e):
   x = 0
   y = 20
   canvas.move(img, x, y)

# 定义一个函数,使图像能够在画布中移动
def move(e):
   global image
   image = ImageTk.PhotoImage(Image.open('logo.png'))
   img = canvas.create_image(e.x, e.y, image=image)

# 将移动函数与Canvas小部件绑定
canvas.bind("<B1-Motion>", move)

win.mainloop()

输出

运行上面的代码将显示一个窗口,其中包含一个可以通过鼠标按钮在窗口中移动的图像。

如何使用鼠标移动Tkinter画布?

现在,点击Canvas并使用鼠标拖动对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程