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

tkinterpythongui-programming更新于 2025/7/12 16:12:17

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.bind("<B1-Motion>", move)

win.mainloop()

输出

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

现在,单击画布并用鼠标拖动对象。


相关文章


有用资源