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

Képnéző alkalmazás Pythonban. (Szoftverfejlesztő)

Képnéző alkalmazás Pythonban, beépített tkinter grafikus könyvtárát és a Pillow (PIL) képkezelő modult érdemes használni.

---------------
import os
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk

class KepnezoApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Python Képnéző")
        self.root.geometry("800x600")

        self.kep_lista = []
        self.aktualis_index = 0
        self.kep_objektum = None

        # Gomb a mappa kiválasztásához
        self.mappa_gomb = tk.Button(root, text="Mappa kiválasztása", command=self.mappa_valasztas)
        self.mappa_gomb.pack(pady=10)

        # Kép megjelenítő címke
        self.kep_cimke = tk.Label(root)
        self.kep_cimke.pack(expand=True, fill=tk.BOTH)

        # Navigációs keret
        self.also_keret = tk.Frame(root)
        self.also_keret.pack(side=tk.BOTTOM, pady=10)

        self.elozo_gomb = tk.Button(self.also_keret, text="<< Előző", command=self.elozo_kep)
        self.elozo_gomb.pack(side=tk.LEFT, padx=10)

        self.kovetkezo_gomb = tk.Button(self.also_keret, text="Következő >>", command=self.kovetkezo_kep)
        self.kovetkezo_gomb.pack(side=tk.RIGHT, padx=10)

    def mappa_valasztas(self):
        mappa_utvonal = filedialog.askdirectory()
        if mappa_utvonal:
            tamogatott_form = ('.png', '.jpg', '.jpeg', '.gif', '.bmp')
            self.kep_lista = [
                os.path.join(mappa_utvonal, f) for f in os.listdir(mappa_utvonal)
                if f.lower().endswith(tamogatott_form)
            ]
            
            if self.kep_lista:
                self.aktualis_index = 0
                self.kep_megjelenites()
            else:
                self.kep_cimke.config(text="Nincs kép a mappában!", image="")

    def kep_megjelenites(self):
        if not self.kep_lista:
            return

        kep_path = self.kep_lista[self.aktualis_index]
        
        try:
            # Kép beolvasása a Pillow segítségével
            eredeti_kep = Image.open(kep_path)
            
            # Kép méretezése az ablakhoz (megtartva az arányokat)
            ablak_szelesseg = self.root.winfo_width() or 800
            ablak_magassag = self.root.winfo_height() - 100 or 500
            eredeti_kep.thumbnail((ablak_szelesseg, ablak_magassag))
            
            self.kep_objektum = ImageTk.PhotoImage(eredeti_kep)
            
            # Frissítjük a Label-t az új képpel
            self.kep_cimke.config(image=self.kep_objektum, text="")
            self.root.title(f"Python Képnéző - {os.path.basename(kep_path)}")
        except Exception as e:
            self.kep_cimke.config(text="Hiba a kép betöltésekor!", image="")

    def elozo_kep(self):
        if self.kep_lista:
            self.aktualis_index = (self.aktualis_index - 1) % len(self.kep_lista)
            self.kep_megjelenites()

    def kovetkezo_kep(self):
        if self.kep_lista:
            self.aktualis_index = (self.aktualis_index + 1) % len(self.kep_lista)
            self.kep_megjelenites()

# Alkalmazás indítása
if __name__ == "__main__":
    fo_ablak = tk.Tk()
    app = KepnezoApp(fo_ablak)
    fo_ablak.mainloop()
------------------


Nincsenek megjegyzések:

Megjegyzés küldése