Python-Dateien formatiert
This commit is contained in:
+44
-36
@@ -1,8 +1,10 @@
|
|||||||
import os
|
|
||||||
import glob
|
import glob
|
||||||
from PySide6.QtWidgets import QMainWindow, QLabel
|
import os
|
||||||
from PySide6.QtGui import QPixmap, QCursor
|
|
||||||
from PySide6.QtCore import Qt
|
from PySide6.QtCore import Qt
|
||||||
|
from PySide6.QtGui import QCursor, QPixmap
|
||||||
|
from PySide6.QtWidgets import QLabel, QMainWindow
|
||||||
|
|
||||||
from ui.MainWinddow_ui import Ui_MainWindow
|
from ui.MainWinddow_ui import Ui_MainWindow
|
||||||
|
|
||||||
|
|
||||||
@@ -10,58 +12,58 @@ class MainWindow(QMainWindow):
|
|||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
"""
|
"""
|
||||||
Konstruktor für die MainWindow-Klasse.
|
Konstruktor für die MainWindow-Klasse.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
parent: Übergeordnetes Widget, falls vorhanden
|
parent: Übergeordnetes Widget, falls vorhanden
|
||||||
"""
|
"""
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
|
||||||
# UI einrichten
|
# UI einrichten
|
||||||
self.ui = Ui_MainWindow()
|
self.ui = Ui_MainWindow()
|
||||||
self.ui.setupUi(self)
|
self.ui.setupUi(self)
|
||||||
|
|
||||||
# Dict zum Speichern der Beziehung zwischen Thumbnails und großen Bildern
|
# Dict zum Speichern der Beziehung zwischen Thumbnails und großen Bildern
|
||||||
self.thumbnail_to_full_image = {}
|
self.thumbnail_to_full_image = {}
|
||||||
|
|
||||||
# Dict zum Speichern der Original-Pixmaps für Zoom-Funktion
|
# Dict zum Speichern der Original-Pixmaps für Zoom-Funktion
|
||||||
self.original_pixmaps = {}
|
self.original_pixmaps = {}
|
||||||
|
|
||||||
# Aktueller Zoom-Faktor
|
# Aktueller Zoom-Faktor
|
||||||
self.current_zoom = 100 # 100%
|
self.current_zoom = 100 # 100%
|
||||||
|
|
||||||
# Bilder laden
|
# Bilder laden
|
||||||
self._load_images()
|
self._load_images()
|
||||||
|
|
||||||
# Signale und Slots verbinden
|
# Signale und Slots verbinden
|
||||||
self._connect_signals()
|
self._connect_signals()
|
||||||
|
|
||||||
def _load_images(self):
|
def _load_images(self):
|
||||||
"""Lädt alle GIF-Dateien aus dem Ressourcen-Verzeichnis."""
|
"""Lädt alle GIF-Dateien aus dem Ressourcen-Verzeichnis."""
|
||||||
# Entferne bestehende Widgets aus den Layouts
|
# Entferne bestehende Widgets aus den Layouts
|
||||||
self._clear_layout(self.ui.verticalLayout_2)
|
self._clear_layout(self.ui.verticalLayout_2)
|
||||||
self._clear_layout(self.ui.verticalLayout_3)
|
self._clear_layout(self.ui.verticalLayout_3)
|
||||||
|
|
||||||
# Dicts zurücksetzen
|
# Dicts zurücksetzen
|
||||||
self.thumbnail_to_full_image = {}
|
self.thumbnail_to_full_image = {}
|
||||||
self.original_pixmaps = {}
|
self.original_pixmaps = {}
|
||||||
|
|
||||||
# Pfad zum Ressourcen-Ordner
|
# Pfad zum Ressourcen-Ordner
|
||||||
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
res_dir = os.path.join(base_dir, "src", "ui", "res")
|
res_dir = os.path.join(base_dir, "src", "ui", "res")
|
||||||
|
|
||||||
# Alle GIF-Dateien finden
|
# Alle GIF-Dateien finden
|
||||||
gif_files = glob.glob(os.path.join(res_dir, "*.gif"))
|
gif_files = glob.glob(os.path.join(res_dir, "*.gif"))
|
||||||
gif_files.sort() # Dateien alphabetisch sortieren
|
gif_files.sort() # Dateien alphabetisch sortieren
|
||||||
|
|
||||||
print(f"Gefundene GIF-Dateien: {gif_files}")
|
print(f"Gefundene GIF-Dateien: {gif_files}")
|
||||||
|
|
||||||
# Für jede GIF-Datei:
|
# Für jede GIF-Datei:
|
||||||
for gif_file in gif_files:
|
for gif_file in gif_files:
|
||||||
filename = os.path.basename(gif_file)
|
filename = os.path.basename(gif_file)
|
||||||
|
|
||||||
# Original-Pixmap laden und speichern
|
# Original-Pixmap laden und speichern
|
||||||
original_pixmap = QPixmap(gif_file)
|
original_pixmap = QPixmap(gif_file)
|
||||||
|
|
||||||
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
||||||
thumbnail = QLabel()
|
thumbnail = QLabel()
|
||||||
thumbnail.setObjectName(f"thumbnail_{filename}")
|
thumbnail.setObjectName(f"thumbnail_{filename}")
|
||||||
@@ -69,21 +71,25 @@ class MainWindow(QMainWindow):
|
|||||||
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
||||||
thumbnail.setMouseTracking(True)
|
thumbnail.setMouseTracking(True)
|
||||||
self.ui.verticalLayout_2.addWidget(thumbnail)
|
self.ui.verticalLayout_2.addWidget(thumbnail)
|
||||||
|
|
||||||
# Vollbild-Version erstellen und zur rechten Spalte hinzufügen
|
# Vollbild-Version erstellen und zur rechten Spalte hinzufügen
|
||||||
fullsize = QLabel()
|
fullsize = QLabel()
|
||||||
fullsize.setObjectName(f"fullsize_{filename}")
|
fullsize.setObjectName(f"fullsize_{filename}")
|
||||||
fullsize.setPixmap(original_pixmap)
|
fullsize.setPixmap(original_pixmap)
|
||||||
fullsize.setAlignment(Qt.AlignmentFlag.AlignHCenter) # Horizontale Zentrierung
|
fullsize.setAlignment(
|
||||||
|
Qt.AlignmentFlag.AlignHCenter
|
||||||
|
) # Horizontale Zentrierung
|
||||||
self.ui.verticalLayout_3.addWidget(fullsize)
|
self.ui.verticalLayout_3.addWidget(fullsize)
|
||||||
|
|
||||||
# Beziehungen speichern
|
# Beziehungen speichern
|
||||||
self.thumbnail_to_full_image[thumbnail] = fullsize
|
self.thumbnail_to_full_image[thumbnail] = fullsize
|
||||||
self.original_pixmaps[fullsize] = original_pixmap
|
self.original_pixmaps[fullsize] = original_pixmap
|
||||||
|
|
||||||
# Click-Event für das Thumbnail einrichten
|
# Click-Event für das Thumbnail einrichten
|
||||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
thumbnail.mousePressEvent = (
|
||||||
|
lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||||
|
)
|
||||||
|
|
||||||
def _clear_layout(self, layout):
|
def _clear_layout(self, layout):
|
||||||
"""Entfernt alle Widgets aus einem Layout."""
|
"""Entfernt alle Widgets aus einem Layout."""
|
||||||
if layout is not None:
|
if layout is not None:
|
||||||
@@ -92,53 +98,55 @@ class MainWindow(QMainWindow):
|
|||||||
widget = item.widget()
|
widget = item.widget()
|
||||||
if widget is not None:
|
if widget is not None:
|
||||||
widget.deleteLater()
|
widget.deleteLater()
|
||||||
|
|
||||||
def _connect_signals(self):
|
def _connect_signals(self):
|
||||||
"""Verbindet Signale mit den entsprechenden Slots."""
|
"""Verbindet Signale mit den entsprechenden Slots."""
|
||||||
# Button-Klicks verbinden
|
# Button-Klicks verbinden
|
||||||
self.ui.pushButton.clicked.connect(self.on_button_clicked)
|
self.ui.pushButton.clicked.connect(self.on_button_clicked)
|
||||||
|
|
||||||
# Zoom-Slider verbinden
|
# Zoom-Slider verbinden
|
||||||
self.ui.zoom.valueChanged.connect(self.apply_zoom)
|
self.ui.zoom.valueChanged.connect(self.apply_zoom)
|
||||||
|
|
||||||
def on_button_clicked(self):
|
def on_button_clicked(self):
|
||||||
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
||||||
print("Button wurde geklickt!")
|
print("Button wurde geklickt!")
|
||||||
# Hier kann die gewünschte Aktion für den Button definiert werden
|
# Hier kann die gewünschte Aktion für den Button definiert werden
|
||||||
|
|
||||||
def on_thumbnail_clicked(self, event, thumbnail):
|
def on_thumbnail_clicked(self, event, thumbnail):
|
||||||
"""
|
"""
|
||||||
Wird ausgeführt, wenn ein Thumbnail angeklickt wird.
|
Wird ausgeführt, wenn ein Thumbnail angeklickt wird.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
event: Das Maus-Event
|
event: Das Maus-Event
|
||||||
thumbnail: Das geklickte Thumbnail-Label
|
thumbnail: Das geklickte Thumbnail-Label
|
||||||
"""
|
"""
|
||||||
print(f"Thumbnail {thumbnail.objectName()} wurde angeklickt: {event}")
|
print(f"Thumbnail {thumbnail.objectName()} wurde angeklickt: {event}")
|
||||||
|
|
||||||
# Zum entsprechenden Vollbild scrollen
|
# Zum entsprechenden Vollbild scrollen
|
||||||
full_image = self.thumbnail_to_full_image.get(thumbnail)
|
full_image = self.thumbnail_to_full_image.get(thumbnail)
|
||||||
if full_image:
|
if full_image:
|
||||||
self.ui.scrollArea_2.ensureWidgetVisible(full_image)
|
self.ui.scrollArea_2.ensureWidgetVisible(full_image)
|
||||||
|
|
||||||
def apply_zoom(self, zoom_value):
|
def apply_zoom(self, zoom_value):
|
||||||
"""
|
"""
|
||||||
Wendet den Zoom-Faktor auf alle Bilder im rechten Panel an.
|
Wendet den Zoom-Faktor auf alle Bilder im rechten Panel an.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
zoom_value: Der neue Zoom-Wert (in Prozent)
|
zoom_value: Der neue Zoom-Wert (in Prozent)
|
||||||
"""
|
"""
|
||||||
self.current_zoom = zoom_value
|
self.current_zoom = zoom_value
|
||||||
print(f"Zoom geändert auf {zoom_value}%")
|
print(f"Zoom geändert auf {zoom_value}%")
|
||||||
|
|
||||||
# Wende den Zoom auf alle Bilder an
|
# Wende den Zoom auf alle Bilder an
|
||||||
for fullsize_label, original_pixmap in self.original_pixmaps.items():
|
for fullsize_label, original_pixmap in self.original_pixmaps.items():
|
||||||
# Berechne die neue Größe basierend auf dem Zoom-Faktor
|
# Berechne die neue Größe basierend auf dem Zoom-Faktor
|
||||||
new_width = int(original_pixmap.width() * zoom_value / 100)
|
new_width = int(original_pixmap.width() * zoom_value / 100)
|
||||||
|
|
||||||
# Skaliere das Bild und setze es ins Label
|
# Skaliere das Bild und setze es ins Label
|
||||||
scaled_pixmap = original_pixmap.scaledToWidth(new_width, Qt.TransformationMode.SmoothTransformation)
|
scaled_pixmap = original_pixmap.scaledToWidth(
|
||||||
|
new_width, Qt.TransformationMode.SmoothTransformation
|
||||||
|
)
|
||||||
fullsize_label.setPixmap(scaled_pixmap)
|
fullsize_label.setPixmap(scaled_pixmap)
|
||||||
|
|
||||||
# Stelle sicher, dass die horizontale Zentrierung beibehalten wird
|
# Stelle sicher, dass die horizontale Zentrierung beibehalten wird
|
||||||
fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
|
fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
|
||||||
|
|||||||
+5
-3
@@ -1,5 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from PySide6.QtWidgets import QApplication
|
from PySide6.QtWidgets import QApplication
|
||||||
|
|
||||||
from MainWindow import MainWindow
|
from MainWindow import MainWindow
|
||||||
|
|
||||||
|
|
||||||
@@ -7,13 +9,13 @@ def main():
|
|||||||
"""Haupteinstiegspunkt der Anwendung."""
|
"""Haupteinstiegspunkt der Anwendung."""
|
||||||
# QApplication-Instanz erstellen
|
# QApplication-Instanz erstellen
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
|
|
||||||
# Hauptfenster erstellen
|
# Hauptfenster erstellen
|
||||||
window = MainWindow()
|
window = MainWindow()
|
||||||
|
|
||||||
# Hauptfenster anzeigen
|
# Hauptfenster anzeigen
|
||||||
window.show()
|
window.show()
|
||||||
|
|
||||||
# Anwendung ausführen und Rückgabewert zurückgeben
|
# Anwendung ausführen und Rückgabewert zurückgeben
|
||||||
return app.exec()
|
return app.exec()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user