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