首页 > 解决方案 > 在 tkinter 画布上绘制一条粗曲线

问题描述

我想使用 tkinter Canvas 对象在屏幕上绘制笔迹。使用来自 tkdocs 网站的示例代码,当我使用 20 的大线宽时,我得到以下绘图工件:

在此处输入图像描述

但是,对于小线宽,一切都很好:

在此处输入图像描述

这是完整的 Python 代码:

from tkinter import *
from tkinter import ttk

class Sketchpad(Canvas):
    def __init__(self, parent, **kwargs):
        super().__init__(parent, **kwargs)
        self.bind("<Button-1>", self.save_posn)
        self.bind("<B1-Motion>", self.add_line)
        
    def save_posn(self, event):
        self.lastx, self.lasty = event.x, event.y

    def add_line(self, event):
        self.create_line((self.lastx, self.lasty, event.x, event.y))
        self.save_posn(event)

root = Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

sketch = Sketchpad(root)
sketch.grid(column=0, row=0, sticky=(N, W, E, S))

root.mainloop()

我正在使用 Python 3.8。

到目前为止我尝试了什么:

有人知道我如何摆脱这个神器吗?

谢谢!

标签: pythontkintercanvasdrawingtkinter-canvas

解决方案


您可以capstyle='round'使用create_line()

self.create_line((self.lastx, self.lasty, event.x, event.y), width=20, capstyle='round')

推荐阅读