Tkinter Canvas 鼠标拖曳绘制线条

Tkinter Canvas 鼠标拖曳绘制线条

Python的tkinter模块在Canvas控件部分并没有提供绘制点的工具,不过我们可以使用鼠标拖曳时绑定paint事件处理程序,在这个事件中可以取得鼠标坐标,然后使用create_oval( )方法绘制极小化的圆,方法是圆的左上角坐标与右下角左标相同,可以参考下列实例。

示例1

设计一个简单的绘图程序,这个程序在执行时若是拖曳鼠标可以绘制线条。

from tkinter import * 

def paint(event):              # 拖曳可以绘图
    x1,y1 = (event.x,event.y)  # 设置左上角坐标
    x2,y2 = (event.x,event.y)  # 设置右下角坐标

    x1,y1 = (event.x-1,event.y-1)  # 设置左上角坐标
    x2,y2 = (event.x+1,event.y+1)  # 设置右下角坐标

    canvas.create_oval(x1,y1,x2,y2,fill="blue")
def cls():                     # 清除画面
    canvas.delete("all")

tk = Tk()
tk.title("apidemos.com")
lab = Label(tk,text='Drag and drop the mouse to draw')      # 建立标题
lab.pack()
canvas = Canvas(tk,width=640, height=300)  # 建立画布
canvas.pack()

btn = Button(tk,text="Clear",command=cls)    # 建立“Clear”按钮
btn.pack(pady=5)

canvas.bind("<B1-Motion>",paint)            # 鼠标拖曳绑定paint

tk.mainloop()

输出:

Tkinter Canvas 鼠标拖曳绘制线条

上述程序第12行使用了delete()方法,这个方法内部加上“all”,可以删除所有绘制的图,对此程序而言相当于清除画布。如果想要让所绘制的线条变粗,可以适度将左上角的(x,y)坐标减1,右下角的(x,y)坐标加1。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程