Vorschau-Bilder werden generiert und mit voll Ansicht verknüpft
This commit is contained in:
+70
-26
@@ -1,7 +1,8 @@
|
||||
import os
|
||||
from PySide6.QtWidgets import QMainWindow
|
||||
from PySide6.QtGui import QPixmap
|
||||
# from PySide6.QtCore import Qt
|
||||
import glob
|
||||
from PySide6.QtWidgets import QMainWindow, QLabel
|
||||
from PySide6.QtGui import QPixmap, QCursor
|
||||
from PySide6.QtCore import Qt
|
||||
from ui.MainWinddow_ui import Ui_MainWindow
|
||||
|
||||
|
||||
@@ -19,42 +20,85 @@ class MainWindow(QMainWindow):
|
||||
self.ui = Ui_MainWindow()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Bilder korrekt laden
|
||||
# Dict zum Speichern der Beziehung zwischen Thumbnails und großen Bildern
|
||||
self.thumbnail_to_full_image = {}
|
||||
|
||||
# Bilder laden
|
||||
self._load_images()
|
||||
|
||||
# Signale und Slots verbinden
|
||||
self._connect_signals()
|
||||
|
||||
def _load_images(self):
|
||||
"""Lädt die Bilder mit absoluten Pfaden."""
|
||||
"""Lädt alle GIF-Dateien aus dem Ressourcen-Verzeichnis."""
|
||||
# Entferne bestehende Widgets aus den Layouts
|
||||
self._clear_layout(self.ui.verticalLayout_2)
|
||||
self._clear_layout(self.ui.verticalLayout_3)
|
||||
|
||||
# Pfad zum Ressourcen-Ordner
|
||||
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
res_dir = os.path.join(base_dir, "src", "ui", "res")
|
||||
|
||||
# Absolute Pfade zu den Bildern erstellen
|
||||
img1_path = os.path.join(base_dir, "src", "ui", "res", "graf_1.gif")
|
||||
img2_path = os.path.join(base_dir, "src", "ui", "res", "graf_3.gif")
|
||||
# Alle GIF-Dateien finden
|
||||
gif_files = glob.glob(os.path.join(res_dir, "*.gif"))
|
||||
gif_files.sort() # Dateien alphabetisch sortieren
|
||||
|
||||
print(repr(self.ui.label), img2_path)
|
||||
print(f"Gefundene GIF-Dateien: {gif_files}")
|
||||
|
||||
# Bilder setzen, wenn die Dateien existieren
|
||||
if os.path.exists(img1_path):
|
||||
self.ui.label.setPixmap(QPixmap(img1_path).scaledToWidth(200))
|
||||
self.ui.label_3.setPixmap(QPixmap(img1_path))
|
||||
else:
|
||||
self.ui.label.setText(f"Fehler: Bild nicht gefunden: {img1_path}")
|
||||
self.ui.label_3.setText(f"Fehler: Bild nicht gefunden: {img1_path}")
|
||||
# Für jede GIF-Datei:
|
||||
for gif_file in gif_files:
|
||||
filename = os.path.basename(gif_file)
|
||||
|
||||
if os.path.exists(img2_path):
|
||||
self.ui.label_2.setPixmap(QPixmap(img2_path).scaledToWidth(200))
|
||||
self.ui.label_4.setPixmap(QPixmap(img2_path))
|
||||
else:
|
||||
self.ui.label_2.setText(f"Fehler: Bild nicht gefunden: {img2_path}")
|
||||
self.ui.label_4.setText(f"Fehler: Bild nicht gefunden: {img2_path}")
|
||||
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
||||
thumbnail = QLabel()
|
||||
thumbnail.setObjectName(f"thumbnail_{filename}")
|
||||
thumbnail.setPixmap(QPixmap(gif_file).scaledToWidth(200))
|
||||
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
||||
thumbnail.setMouseTracking(True)
|
||||
self.ui.verticalLayout_2.addWidget(thumbnail)
|
||||
|
||||
# Vollbild-Version erstellen und zur rechten Spalte hinzufügen
|
||||
fullsize = QLabel()
|
||||
fullsize.setObjectName(f"fullsize_{filename}")
|
||||
fullsize.setPixmap(QPixmap(gif_file))
|
||||
self.ui.verticalLayout_3.addWidget(fullsize)
|
||||
|
||||
# Beziehung zwischen Thumbnail und Vollbild speichern
|
||||
self.thumbnail_to_full_image[thumbnail] = fullsize
|
||||
|
||||
# Click-Event für das Thumbnail einrichten
|
||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||
|
||||
def _clear_layout(self, layout):
|
||||
"""Entfernt alle Widgets aus einem Layout."""
|
||||
if layout is not None:
|
||||
while layout.count():
|
||||
item = layout.takeAt(0)
|
||||
widget = item.widget()
|
||||
if widget is not None:
|
||||
widget.deleteLater()
|
||||
|
||||
def _connect_signals(self):
|
||||
"""Verbindet Signale mit den entsprechenden Slots."""
|
||||
# Beispiel für Signal-Verbindung:
|
||||
# Button-Klicks verbinden
|
||||
# self.ui.pushButton.clicked.connect(self.on_button_clicked)
|
||||
|
||||
# Beispiel für einen Slot:
|
||||
# def on_button_clicked(self):
|
||||
# print("Button wurde geklickt!")
|
||||
def on_button_clicked(self):
|
||||
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
||||
print("Button wurde geklickt!")
|
||||
# Hier kann die gewünschte Aktion für den Button definiert werden
|
||||
|
||||
def on_thumbnail_clicked(self, event, thumbnail):
|
||||
"""
|
||||
Wird ausgeführt, wenn ein Thumbnail angeklickt wird.
|
||||
|
||||
Args:
|
||||
event: Das Maus-Event
|
||||
thumbnail: Das geklickte Thumbnail-Label
|
||||
"""
|
||||
print(f"Thumbnail {thumbnail.objectName()} wurde angeklickt: {event}")
|
||||
|
||||
# Zum entsprechenden Vollbild scrollen
|
||||
full_image = self.thumbnail_to_full_image.get(thumbnail)
|
||||
if full_image:
|
||||
self.ui.scrollArea_2.ensureWidgetVisible(full_image)
|
||||
|
||||
Reference in New Issue
Block a user