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

Szövegszerkesztő szoftver létrehozása Pythonban (Szoftverfejlesztő)

Egy egyszerű, de teljesen működőképes szövegszerkesztő szoftver létrehozásához a Python beépített grafikus felhasználói felület (GUI) könyvtárát, a Tkinter-t használhatjuk. Az alábbi kód egy olyan alapvető szerkesztőt valósít meg, amellyel fájlokat hozhatsz létre, nyithatsz meg, szerkeszthetsz és menthetsz el.
-----------------
import tkinter as tk
from tkinter import filedialog, messagebox

class Szovegszerkeszto:
    def __init__(self, root):
        self.root = root
        self.root.title("Egyszerű Szövegszerkesztő")
        self.root.geometry("600x400")

        # Szövegbeviteli mező és görgetősáv (Scrollbar)
        self.szoveg_doboz = tk.Text(self.root, wrap="word", undo=True)
        self.szoveg_doboz.pack(fill="both", expand=True)

        self.gorgeto = tk.Scrollbar(self.szoveg_doboz)
        self.gorgeto.pack(side="right", fill="y")
        self.gorgeto.config(command=self.szoveg_doboz.yview)
        self.szoveg_doboz.config(yscrollcommand=self.gorgeto.set)

        # Fájl elérési útvonala (ha már mentve van)
        self.aktualis_fajl = None

        # Menüsor létrehozása
        menu_sor = tk.Menu(self.root)
        self.root.config(menu=menu_sor)

        # Fájl menü
        fajl_menu = tk.Menu(menu_sor, tearoff=False)
        menu_sor.add_cascade(label="Fájl", menu=fajl_menu)
        fajl_menu.add_command(label="Új", command=self.uj_fajl)
        fajl_menu.add_command(label="Megnyitás...", command=self.megnyitas)
        fajl_menu.add_command(label="Mentés", command=self.mentes)
        fajl_menu.add_command(label="Mentés másként...", command=self.mentes_maskent)
        fajl_menu.add_separator()
        fajl_menu.add_command(label="Kilépés", command=self.root.quit)

    def uj_fajl(self):
        self.szoveg_doboz.delete(1.0, tk.END)
        self.aktualis_fajl = None
        self.root.title("Egyszerű Szövegszerkesztő - Új fájl")

    def megnyitas(self):
        fajl_utvonal = filedialog.askopenfilename(defaultextension=".txt",
                                                  filetypes=[("Szöveges fájlok", "*.txt"), ("Minden fájl", "*.*")])
        if fajl_utvonal:
            try:
                with open(fajl_utvonal, "r", encoding="utf-8") as fajl:
                    self.szoveg_doboz.delete(1.0, tk.END)
                    self.szoveg_doboz.insert(tk.END, fajl.read())
                self.aktualis_fajl = fajl_utvonal
                self.root.title(f"Egyszerű Szövegszerkesztő - {fajl_utvonal}")
            except Exception as e:
                messagebox.showerror("Hiba", f"Nem sikerült megnyitni a fájlt: {e}")

    def mentes(self):
        if self.aktualis_fajl:
            try:
                with open(self.aktualis_fajl, "w", encoding="utf-8") as fajl:
                    fajl.write(self.szoveg_doboz.get(1.0, tk.END))
                messagebox.showinfo("Mentve", "A fájl sikeresen mentve!")
            except Exception as e:
                messagebox.showerror("Hiba", f"Nem sikerült menteni a fájlt: {e}")
        else:
            self.mentes_maskent()

    def mentes_maskent(self):
        fajl_utvonal = filedialog.asksaveasfilename(defaultextension=".txt",
                                                    filetypes=[("Szöveges fájlok", "*.txt"), ("Minden fájl", "*.*")])
        if fajl_utvonal:
            self.aktualis_fajl = fajl_utvonal
            self.mentes()
            self.root.title(f"Egyszerű Szövegszerkesztő - {fajl_utvonal}")

if __name__ == "__main__":
    fo_ablak = tk.Tk()
    alkalmazas = Szovegszerkeszto(fo_ablak)
    fo_ablak.mainloop()
------------


Nincsenek megjegyzések:

Megjegyzés küldése