如何使用鼠标移动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()
输出
运行上面的代码将显示一个窗口,其中包含一个可以通过鼠标按钮在窗口中移动的图像。
现在,点击Canvas并使用鼠标拖动对象。