我的目標是讓您在螢屏上制作一個矩形,類似于在繪畫中使用矩形或選擇工具。我已經讓它大部分作業但是當你通過按住左鍵并向外移動滑鼠然后向內移動滑鼠同時仍然按住按鈕來制作一個矩形時,它會留下之前繪制的矩形。
示例圖片
當我將滑鼠快速移動到任何地方時的另一個示例。
import tkinter as tk
import pyautogui
def draw_rect(event, canvas, pos):
x, y = pos
rectangle = canvas.create_rectangle(
x, y, event.x, event.y, outline="yellow", width=3, fill="blue"
)
def draw_canvas(event, root, pos):
canvas = tk.Canvas(root, bg="red")
canvas.pack(fill=tk.BOTH, expand=True)
root.bind("<B1-Motion>", lambda event: draw_rect(event, canvas, pos))
uj5u.com熱心網友回復:
您應該繪制一個矩形,然后在拖動時修改其坐標,而不是連續繪制和洗掉矩形。
這是一個簡單的例子:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, bg="black", width=400, height=400)
canvas.pack(fill="both", expand=True)
def draw_drag(event):
canvas = event.widget
new_x = canvas.canvasx(event.x)
new_y = canvas.canvasy(event.y)
x0, y0, x1, y1 = canvas.coords("current_rect")
canvas.coords("current_rect", x0, y0, new_x, new_y)
def draw_stop(event):
canvas.dtag("current_rect")
def draw_start(event):
canvas = event.widget
x = canvas.canvasx(event.x)
y = canvas.canvasy(event.y)
canvas.create_rectangle(x, y, x, y, fill="red", tags=("current_rect",))
canvas.bind("<ButtonPress-1>", draw_start)
canvas.bind("<ButtonRelease-1>", draw_stop)
canvas.bind("<B1-Motion>", draw_drag)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475794.html
