Zoom implementiert

This commit is contained in:
2025-05-22 21:05:22 +02:00
parent 4524066b25
commit be28625a80
+40 -4
View File
@@ -23,6 +23,12 @@ class MainWindow(QMainWindow):
# 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
self.original_pixmaps = {}
# Aktueller Zoom-Faktor
self.current_zoom = 100 # 100%
# Bilder laden # Bilder laden
self._load_images() self._load_images()
@@ -35,6 +41,10 @@ class MainWindow(QMainWindow):
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
self.thumbnail_to_full_image = {}
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")
@@ -49,10 +59,13 @@ class MainWindow(QMainWindow):
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 = 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}")
thumbnail.setPixmap(QPixmap(gif_file).scaledToWidth(200)) thumbnail.setPixmap(original_pixmap.scaledToWidth(200))
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)
@@ -60,11 +73,12 @@ class MainWindow(QMainWindow):
# 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(QPixmap(gif_file)) fullsize.setPixmap(original_pixmap)
self.ui.verticalLayout_3.addWidget(fullsize) self.ui.verticalLayout_3.addWidget(fullsize)
# Beziehung zwischen Thumbnail und Vollbild speichern # Beziehungen speichern
self.thumbnail_to_full_image[thumbnail] = fullsize self.thumbnail_to_full_image[thumbnail] = fullsize
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)
@@ -81,7 +95,10 @@ class MainWindow(QMainWindow):
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
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."""
@@ -102,3 +119,22 @@ class MainWindow(QMainWindow):
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):
"""
Wendet den Zoom-Faktor auf alle Bilder im rechten Panel an.
Args:
zoom_value: Der neue Zoom-Wert (in Prozent)
"""
self.current_zoom = zoom_value
print(f"Zoom geändert auf {zoom_value}%")
# Wende den Zoom auf alle Bilder an
for fullsize_label, original_pixmap in self.original_pixmaps.items():
# Berechne die neue Größe basierend auf dem Zoom-Faktor
new_width = int(original_pixmap.width() * zoom_value / 100)
# Skaliere das Bild und setze es ins Label
scaled_pixmap = original_pixmap.scaledToWidth(new_width, Qt.TransformationMode.SmoothTransformation)
fullsize_label.setPixmap(scaled_pixmap)