2026. június 15., hétfő

Paint-szerű program készítése Pythonban (Szoftverfejlesztő)

Egy Paint-szerű program készítéséhez a Python beépített tkinter grafikus könyvtára a legmegfelelőbb választás. Az alábbi kód egy alapvető rajzolófelületet hoz létre, amelyen szabadkézzel rajzolhatsz, változtathatod a ceruza színét, és törölheted a vásznat.
------------------
import tkinter as tk
from tkinter import colorchooser

class PaintApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Egyszerű Python Paint")
        self.root.geometry("800x600")

        # Alapértelmezett beállítások
        self.pen_color = "black"
        self.pen_size = 5
        self.old_x = None
        self.old_y = None

        # Rajzvászon (Canvas) létrehozása
        self.canvas = tk.Canvas(self.root, bg="white")
        self.canvas.pack(fill=tk.BOTH, expand=True)

        # Események összerendelése az egérrel
        self.canvas.bind('<B1-Motion>', self.draw)
        self.canvas.bind('<ButtonRelease-1>', self.reset)

        # Kezelőpanel (Frame) a gomboknak
        self.control_frame = tk.Frame(self.root)
        self.control_frame.pack(fill=tk.X)

        # Színválasztó gomb
        self.color_button = tk.Button(self.control_frame, text="Szín választása", command=self.choose_color)
        self.color_button.pack(side=tk.LEFT, padx=5, pady=5)

        # Radír gomb
        self.eraser_button = tk.Button(self.control_frame, text="Radír", command=self.use_eraser)
        self.eraser_button.pack(side=tk.LEFT, padx=5, pady=5)

        # Méret növelése és csökkentése
        self.plus_button = tk.Button(self.control_frame, text="Vastagítás (+)", command=self.increase_size)
        self.plus_button.pack(side=tk.LEFT, padx=5, pady=5)

        self.minus_button = tk.Button(self.control_frame, text="Vékonyítás (-)", command=self.decrease_size)
        self.minus_button.pack(side=tk.LEFT, padx=5, pady=5)

        # Törlés gomb
        self.clear_button = tk.Button(self.control_frame, text="Mindent töröl", command=self.clear_canvas)
        self.clear_button.pack(side=tk.LEFT, padx=5, pady=5)

    def choose_color(self):
        # Megnyitja a színválasztó ablakot
        color_code = colorchooser.askcolor(title="Válassz színt!")[1]
        if color_code:
            self.pen_color = color_code

    def use_eraser(self):
        # A radír lényegében egy fehér színű "ceruza"
        self.pen_color = "white"

    def increase_size(self):
        self.pen_size += 2

    def decrease_size(self):
        if self.pen_size > 2:
            self.pen_size -= 2

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

    def draw(self, event):
        # Rajzolás a vászonra
        if self.old_x and self.old_y:
            self.canvas.create_line(self.old_x, self.old_y, event.x, event.y,
                                    width=self.pen_size, fill=self.pen_color,
                                    capstyle=tk.ROUND, smooth=tk.TRUE)
        self.old_x = event.x
        self.old_y = event.y

    def reset(self, event):
        # Reseteli a koordinátákat, mikor elengedjük az egeret
        self.old_x = None
        self.old_y = None

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

--------------


Nincsenek megjegyzések:

Megjegyzés küldése