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