Thursday, August 14, 2025

Tahsin's Open Source Python Paint Software with Tkinter (Tahsin's Software)

๐Ÿงช Features Included

  • ๐Ÿ–Œ️ Freehand painting with adjustable color
  • ⬛ Rectangle drawing
  • ⚪ Circle drawing
  • ๐Ÿ“ฆ Simulated 3D box with shading
  • ๐ŸŽจ Color picker
  • ๐Ÿงผ Canvas clearing

๐ŸŽจ Tahsin's Open Source Python Paint Software with Tkinter

import tkinter as tk
from tkinter import colorchooser

class PaintApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Tahsin's Python Paint Software")

        self.current_tool = "paint"
        self.current_color = "black"
        self.start_x = None
        self.start_y = None

        # Canvas setup
        self.canvas = tk.Canvas(root, bg="white", width=800, height=600)
        self.canvas.pack(fill=tk.BOTH, expand=True)

        # Tool buttons
        tool_frame = tk.Frame(root)
        tool_frame.pack()

        tk.Button(tool_frame, text="Paint", command=lambda: self.select_tool("paint")).pack(side=tk.LEFT)
        tk.Button(tool_frame, text="Rectangle", command=lambda: self.select_tool("rectangle")).pack(side=tk.LEFT)
        tk.Button(tool_frame, text="Circle", command=lambda: self.select_tool("circle")).pack(side=tk.LEFT)
        tk.Button(tool_frame, text="3D Box", command=lambda: self.select_tool("3d")).pack(side=tk.LEFT)
        tk.Button(tool_frame, text="Choose Color", command=self.choose_color).pack(side=tk.LEFT)
        tk.Button(tool_frame, text="Clear", command=self.clear_canvas).pack(side=tk.LEFT)

        # Bind mouse events
        self.canvas.bind("<ButtonPress-1>", self.on_press)
        self.canvas.bind("<B1-Motion>", self.on_drag)
        self.canvas.bind("<ButtonRelease-1>", self.on_release)

    def select_tool(self, tool):
        self.current_tool = tool

    def choose_color(self):
        color = colorchooser.askcolor()[1]
        if color:
            self.current_color = color

    def clear_canvas(self):
        self.canvas.delete("all")

    def on_press(self, event):
        self.start_x = event.x
        self.start_y = event.y
        if self.current_tool == "paint":
            self.canvas.create_oval(event.x, event.y, event.x+1, event.y+1, fill=self.current_color, outline=self.current_color)

    def on_drag(self, event):
        if self.current_tool == "paint":
            self.canvas.create_oval(event.x, event.y, event.x+5, event.y+5, fill=self.current_color, outline=self.current_color)

    def on_release(self, event):
        if self.current_tool == "rectangle":
            self.canvas.create_rectangle(self.start_x, self.start_y, event.x, event.y, outline=self.current_color)
        elif self.current_tool == "circle":
            self.canvas.create_oval(self.start_x, self.start_y, event.x, event.y, outline=self.current_color)
        elif self.current_tool == "3d":
            # Simulate a 3D box with shaded lines
            x1, y1, x2, y2 = self.start_x, self.start_y, event.x, event.y
            offset = 20
            # Front face
            self.canvas.create_rectangle(x1, y1, x2, y2, outline=self.current_color)
            # Back face
            self.canvas.create_rectangle(x1+offset, y1-offset, x2+offset, y2-offset, outline=self.current_color)
            # Connect corners
            self.canvas.create_line(x1, y1, x1+offset, y1-offset, fill=self.current_color)
            self.canvas.create_line(x2, y1, x2+offset, y1-offset, fill=self.current_color)
            self.canvas.create_line(x1, y2, x1+offset, y2-offset, fill=self.current_color)
            self.canvas.create_line(x2, y2, x2+offset, y2-offset, fill=self.current_color)

# Run the app
if __name__ == "__main__":
    root = tk.Tk()
    app = PaintApp(root)
    root.mainloop()

No comments:

Post a Comment

Support Vector Machines in Machine Learning

Support Vector Machines in Machine Learning Introduction Support Vector Machines (SVMs) are powerful supervised learning algorithms used ...