import tkinter as tk
from tkinter import ttk

class SimpleDrawBoard:
    def __init__(self, root):
        self.root = root
        self.root.title("简易画图板")
        self.root.geometry("700x550")
        self.root.resizable(False, False)

        # 画笔默认参数
        self.color = "black"
        self.pen_size = 3
        self.last_x = None
        self.last_y = None

        # 顶部控制栏
        top_frame = tk.Frame(root, height=60, bg="#eeeeee")
        top_frame.pack(fill=tk.X)

        # 颜色按钮
        colors = ["black", "red", "blue", "green", "orange", "purple"]
        for index, c in enumerate(colors):
            btn = tk.Button(
                top_frame, bg=c, width=3, height=2,
                command=lambda col=c: self.set_color(col)
            )
            btn.grid(row=0, column=index, padx=6, pady=8)

        # 画笔粗细选择
        tk.Label(top_frame, text="粗细：", bg="#eeeeee").grid(row=0, column=7, padx=(15, 2))
        size_box = ttk.Combobox(top_frame, values=[1, 2, 3, 5, 8, 12], width=5)
        size_box.current(2)
        size_box.grid(row=0, column=8)
        size_box.bind("<<ComboboxSelected>>", self.change_size)

        # 清空按钮
        clear_btn = tk.Button(top_frame, text="清空画布", command=self.clear_canvas, bg="#ff4444", fg="white")
        clear_btn.grid(row=0, column=10, padx=15)

        # 画布区域
        self.canvas = tk.Canvas(root, bg="white", width=700, height=490)
        self.canvas.pack()

        # 绑定鼠标事件
        self.canvas.bind("<Button-1>", self.mouse_down)   # 按下鼠标
        self.canvas.bind("<B1-Motion>", self.mouse_draw)  # 拖拽画画
        self.canvas.bind("<ButtonRelease-1>", self.mouse_up)  # 松开结束

    def set_color(self, new_color):
        # 修改画笔颜色
        self.color = new_color

    def change_size(self, event):
        # 修改画笔粗细
        self.pen_size = int(event.widget.get())

    def clear_canvas(self):
        # 清空整张画布
        self.canvas.delete(tk.ALL)

    def mouse_down(self, event):
        # 鼠标按下，记录起点坐标
        self.last_x = event.x
        self.last_y = event.y

    def mouse_draw(self, event):
        # 拖拽时画线
        if self.last_x and self.last_y:
            self.canvas.create_line(
                self.last_x, self.last_y, event.x, event.y,
                fill=self.color, width=self.pen_size, capstyle=tk.ROUND
            )
        # 更新上一个坐标，实现连续线条
        self.last_x = event.x
        self.last_y = event.y

    def mouse_up(self, event):
        # 松开鼠标，清空坐标
        self.last_x = None
        self.last_y = None

if __name__ == "__main__":
    window = tk.Tk()
    app = SimpleDrawBoard(window)
    window.mainloop()