2024-10-04 09:19:36 发布
网友
目前我有一个
canvas.tag_bind(tag, "<ButtonRelease-1>", func=move_point)
用于移动我的点的语句,该语句删除旧点并在用户释放按钮1的位置创建新点。这是可行的,但感觉janky和button-1已经用光了,例如,不能用于在点之间建立连接。我尝试使用b1运动,但它只会将中心移动到我第一次移动鼠标的位置
我的问题是如何制作一个干净的动画(比如windows文件拖放)
下面是一张图,我在图中移动了几个点
以下示例将帮助您开始:
shift click
click
您将需要更多的机器来创建圆之间的链接,并移动它们-甚至可能需要一个状态机来处理转换-但这只是一个开始
import tkinter as tk class App(tk.Tk): radius = 20 def __init__(self): super().__init__() self.canvas = tk.Canvas(self, width=500, height=500, bg='beige') self.canvas.pack() self.canvas.bind('<1>', self.select_circle) self.canvas.bind('<Shift-1>', self.make_circle) self.selected = None def make_circle(self, event): x, y, r = event.x, event.y, self.radius self.canvas.create_oval(x-r, y-r, x+r, y+r, outline='black', fill='white') def select_circle(self, event): self.canvas.bind('<Motion>', self.move_circle) self.canvas.bind('<ButtonRelease-1>', self.deselect) self.canvas.addtag_withtag('selected', tk.CURRENT) def move_circle(self, event): x, y, r = event.x, event.y, self.radius self.canvas.coords('selected', x-r, y-r, x+r, y+r) def deselect(self, event): self.canvas.dtag('selected') # removes the 'selected' tag self.canvas.unbind('<Motion>') self.canvas.bind('<Shift-1>', self.make_circle) if __name__ == '__main__': App().mainloop()
以下示例将帮助您开始:
shift click
在画布上创建一个圆李>click
在圆上选择圆-它将跟随鼠标移动,直到您松开按钮李>您将需要更多的机器来创建圆之间的链接,并移动它们-甚至可能需要一个状态机来处理转换-但这只是一个开始
相关问题 更多 >
编程相关推荐