Das nachfolgende Python-Skript visualisiert ein Bild. Es wird dynamisch an die Fenstergröße angepasst. Weiterhin wird das Fenster im Zentrum des Bildschirmes angezeigt.
#!/usr/bin/env python3
# *****************************************************************************
# Grafische Oberfläche (PyQt6) zur Visualisierung von Bildern im gleichen
# Verzeichnis. Verändert man das Fenster, wird dass Bild automatisch angepasst.
# Installation der Abhängigkeit: pip install PyQt6
# Start: python PyQt6_load_Image.py (c) Hans Busche Datum: 14.07.2026
# *****************************************************************************
import sys
import os
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWidgets import QMainWindow
from PyQt6.QtWidgets import QLabel
from PyQt6.QtWidgets import QVBoxLayout
from PyQt6.QtWidgets import QWidget
from PyQt6.QtGui import QPixmap
from PyQt6.QtCore import Qt
# *****************************************************************************
# Ein QLabel, das sein Bild automatisch an die eigene Größe anpasst.
# *****************************************************************************
class ScalableImageLabel(QLabel):
def __init__(self, image_path, parent=None):
super().__init__(parent)
self.image_path = image_path
self.pixmap_source = QPixmap(self.image_path)
# Verhindert, dass das Label eine Mindestgröße erzwingt
# und das Fenster blockiert
self.setMinimumSize(1, 1)
self.setAlignment(Qt.AlignmentFlag.AlignCenter)
# *****************************************************************************
# Wird automatisch aufgerufen, wenn sich die Größe des Labels ändert.
# Skaliert das Bild passend zur neuen Größe unter Beibehaltung
# des Seitenverhältnisses
# *****************************************************************************
def resizeEvent(self, event):
if not self.pixmap_source.isNull():
scaled_pixmap = self.pixmap_source.scaled(
self.size(),
Qt.AspectRatioMode.KeepAspectRatio,
Qt.TransformationMode.SmoothTransformation
)
self.setPixmap(scaled_pixmap)
super().resizeEvent(event)
# *****************************************************************************
# current_dir-> das Verzeichnis. Sonnenblume.png wird geladen. Oberfläche bauen.
# *****************************************************************************
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Zentriertes Fenster mit dynamischem Bild")
self.init_ui()
def init_ui(self):
current_dir = os.path.dirname(os.path.abspath(__file__))
image_path = os.path.join(current_dir, "Sonnenblume.png")
# 2. Haupt-Widget und Layout erstellen
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout(central_widget)
# Ein wenig Abstand zum Rand
layout.setContentsMargins(10, 10, 10, 10)
# 3. Unser skalierbares Bild-Label hinzufügen
if os.path.exists(image_path):
self.image_label = ScalableImageLabel(image_path)
layout.addWidget(self.image_label)
else:
# Fallback, falls das Bild nicht im Ordner liegt
fallback_label = QLabel(
f"Bild nicht gefunden!\nBitte lege eine Datei namens\
'Sonnenblume.png' in diesen Ordner:\n{current_dir}"
)
fallback_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout.addWidget(fallback_label)
# 4. Standardgröße festlegen und zentrieren
self.resize(800, 600)
self.center_on_screen()
def center_on_screen(self):
#Platziert das Fenster exakt in der Mitte des aktuellen Bildschirms.
# Holt die Geometrie des Hauptfensters
window_geometry = self.frameGeometry()
# Ermittelt den Bildschirm, auf dem sich der Mauszeiger
# befindet (oder den primären Bildschirm)
screen = QApplication.primaryScreen()
if screen:
screen_geometry = screen.availableGeometry()
# Berechnet den Mittelpunkt des Bildschirms und
# verschiebt die Fenstergeometrie dorthin
screen_center = screen_geometry.center()
window_geometry.moveCenter(screen_center)
# Bewegt das tatsächliche Fenster an diese Position
self.move(window_geometry.topLeft())
# *****************************************************************************
# main
# *****************************************************************************
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
# *****************************************************************************
# Ende
# *****************************************************************************
🐍 Skript herunterladen (.py)