以下是使用tkinter实现的一个简单的绘画程序,满足了你的要求:

import tkinter as tk

class DrawingApp:
    def __init__(self, root):
        self.root = root
        self.root.title("绘画程序")
        
        self.canvas_width = 800
        self.canvas_height = 600
        
        self.color = "black"
        self.line_width = 1
        
        self.create_widgets()
        
    def create_widgets(self):
        self.canvas = tk.Canvas(self.root, width=self.canvas_width, height=self.canvas_height)
        self.canvas.pack()
        
        self.canvas.bind("<ButtonPress-1>", self.start_drawing)
        self.canvas.bind("<B1-Motion>", self.draw)
        self.canvas.bind("<ButtonPress-3>", self.start_erasing)
        self.canvas.bind("<B3-Motion>", self.erase)
        self.canvas.bind("<ButtonPress-2>", self.clear_canvas)
        
        self.color_button = tk.Button(self.root, text="选择颜色", command=self.select_color)
        self.color_button.pack(side=tk.LEFT, padx=10)
        
        self.width_scale = tk.Scale(self.root, from_=1, to=10, orient=tk.HORIZONTAL, label="线条粗细", command=self.set_line_width)
        self.width_scale.pack(side=tk.LEFT, padx=10)
        
        self.size_button = tk.Button(self.root, text="更改画布大小", command=self.change_canvas_size)
        self.size_button.pack(side=tk.LEFT, padx=10)
        
    def start_drawing(self, event):
        self.last_x = event.x
        self.last_y = event.y
        
    def draw(self, event):
        self.canvas.create_line(self.last_x, self.last_y, event.x, event.y, fill=self.color, width=self.line_width)
        self.last_x = event.x
        self.last_y = event.y
        
    def start_erasing(self, event):
        self.last_x = event.x
        self.last_y = event.y
        
    def erase(self, event):
        self.canvas.create_rectangle(event.x-5, event.y-5, event.x+5, event.y+5, fill="white", outline="white")
        self.last_x = event.x
        self.last_y = event.y
        
    def clear_canvas(self, event):
        self.canvas.delete("all")
        
    def select_color(self):
        self.color = tk.colorchooser.askcolor()[1]
        
    def set_line_width(self, value):
        self.line_width = int(value)
        
    def change_canvas_size(self):
        new_width = tk.simpledialog.askinteger("更改画布大小", "请输入新的宽度:", parent=self.root, minvalue=100, maxvalue=2000)
        new_height = tk.simpledialog.askinteger("更改画布大小", "请输入新的高度:", parent=self.root, minvalue=100, maxvalue=2000)
        if new_width and new_height:
            self.canvas.config(width=new_width, height=new_height)
            self.canvas_width = new_width
            self.canvas_height = new_height

root = tk.Tk()
app = DrawingApp(root)
root.mainloop()

这个绘画程序使用了tkinter库创建一个窗口,然后在窗口中添加了一个画布(canvas)。左键按下并移动鼠标可以绘制线条,右键按下并移动鼠标可以擦除,中键按下可以清空画布。按钮可以选择颜色、调整线条粗细,以及更改画布大小。

注意,这个程序可能在绘制大量线条时会有些卡顿,如果需要更加丝滑的绘画体验,可以考虑使用其他库,比如Pygame

请用tkinter实现一个跨平台能左键绘画 右键擦除 中键清屏 而且还能调颜色 调粗细 更改画布大小 有帮助说明的 能丝滑绘画的程序

原文地址: https://www.cveoy.top/t/topic/iMCo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录