Umfassende Anleitung zur Steuerung der Fensterposition und -größe mit Python

Python wird aufgrund seiner Vielseitigkeit in der Entwicklung verschiedener Anwendungen eingesetzt. Besonders nützlich ist die Fähigkeit, die Position und Größe von Fenstern programmatisch zu steuern, insbesondere bei der Automatisierung und der Entwicklung von GUI-Anwendungen. In diesem Artikel wird detailliert erläutert, wie Sie mit Python die Position und Größe von Fenstern steuern können, um sowohl Anfängern als auch Fortgeschrittenen gerecht zu werden.

Inhaltsverzeichnis

Erforderliche Bibliotheken und Umgebungssetup

Um Fenster mit Python zu steuern, sind bestimmte Bibliotheken erforderlich. Im Folgenden werden die am häufigsten verwendeten Bibliotheken und deren Installationsmethoden beschrieben.

Erforderliche Bibliotheken

Für die Steuerung von Fenstern werden die folgenden Bibliotheken verwendet:

  • pygetwindow: Wird verwendet, um die Position und Größe von Fenstern zu steuern.
  • pywinauto: Unterstützt die Automatisierung und Steuerung von Fenstern.

Installation der Bibliotheken

Installieren Sie die erforderlichen Bibliotheken mit dem folgenden Befehl.

pip install pygetwindow pywinauto

Umgebungssetup

Es wird empfohlen, die neueste Version von Python zu installieren. Außerdem ist es effizient, einen geeigneten Editor (z. B. VS Code oder PyCharm) zum Ausführen der Skripte zu verwenden.

Grundlegende Methoden zur Fenstersteuerung

Im Folgenden werden grundlegende Codebeispiele zur Fenstersteuerung in Python vorgestellt. Konkret wird erklärt, wie man Fenster erfasst, verschiebt und deren Größe ändert.

Fenster erfassen

Zunächst wird gezeigt, wie man ein bestimmtes Fenster zum Steuern erfasst. Dazu verwenden wir die Bibliothek pygetwindow, um ein bestimmtes Fenster zu erfassen.

import pygetwindow as gw

# Fenster mit einem bestimmten Namen erfassen
window = gw.getWindowsWithTitle('Untitled - Notepad')[0]
print(window)  # Informationen zum erfassten Fenster anzeigen

Fenster verschieben

Im Folgenden wird gezeigt, wie man ein erfasstes Fenster an eine bestimmte Position verschiebt.

# Fenster an die angegebene Position verschieben
window.moveTo(100, 100)

Fenstergröße ändern

Im Folgenden wird erklärt, wie man die Größe eines erfassten Fensters auf bestimmte Abmessungen ändert.

# Fenstergröße ändern
window.resizeTo(800, 600)

Durch das Beherrschen dieser grundlegenden Operationen erhalten Sie ein Verständnis für die Steuerung von Fenstern mit Python.

Methode zur Steuerung der Fensterposition

Im Folgenden wird erklärt, wie man die Position eines Fensters mit Python steuert. Dabei wird gezeigt, wie man die aktuelle Position eines Fensters erfasst und es an eine bestimmte Koordinate verschiebt.

Fensterposition erfassen

Die aktuelle Position eines Fensters kann mit der Bibliothek pygetwindow erfasst werden.

import pygetwindow as gw

# Fenster mit einem bestimmten Namen erfassen
window = gw.getWindowsWithTitle('Untitled - Notepad')[0]

# Aktuelle Fensterposition erfassen
x, y = window.topleft
print(f'Fensterposition: ({x}, {y})')

Fensterposition festlegen

Im Folgenden wird gezeigt, wie man ein erfasstes Fenster an eine bestimmte Koordinate verschiebt.

# Fenster an die angegebene Position verschieben
window.moveTo(300, 200)

Relative Positionsänderung

Es ist auch möglich, das Fenster relativ zur aktuellen Position zu verschieben.

# Fenster relativ verschieben (50 Pixel nach rechts, 30 Pixel nach unten)
window.moveRel(50, 30)

Mit diesen Operationen können Sie die Position von Fenstern frei steuern.

Methode zur Steuerung der Fenstergröße

Im Folgenden wird erklärt, wie man die Größe eines Fensters mit Python steuert. Dabei wird gezeigt, wie man die aktuelle Fenstergröße erfasst und sie auf bestimmte Abmessungen ändert.

Fenstergröße erfassen

Die aktuelle Größe eines Fensters kann mit der Bibliothek pygetwindow erfasst werden.

import pygetwindow as gw

# Fenster mit einem bestimmten Namen erfassen
window = gw.getWindowsWithTitle('Untitled - Notepad')[0]

# Aktuelle Fenstergröße erfassen
width, height = window.size
print(f'Fenstergröße: Breite={width}, Höhe={height}')

Fenstergröße festlegen

Im Folgenden wird gezeigt, wie man die Größe eines erfassten Fensters auf bestimmte Abmessungen ändert.

# Fenstergröße auf bestimmte Abmessungen ändern
window.resizeTo(1024, 768)

Relative Größenänderung

Es ist auch möglich, die Fenstergröße relativ zur aktuellen Größe zu ändern.

# Fenstergröße relativ ändern (Breite um 100 Pixel erhöhen, Höhe um 50 Pixel erhöhen)
window.resizeRel(100, 50)

Mit diesen Operationen können Sie die Größe von Fenstern frei steuern.

Steuerung mehrerer Fenster

Im Folgenden wird erklärt, wie man mehrere Fenster gleichzeitig mit Python steuert. Es wird gezeigt, wie man mehrere Fenster erfasst und deren Position und Größe individuell steuert.

Mehrere Fenster erfassen

Mit der Bibliothek pygetwindow können mehrere Fenster erfasst werden, die bestimmten Kriterien entsprechen.

import pygetwindow as gw

# Alle Fenster, die einen bestimmten Titel enthalten, erfassen
windows = gw.getWindowsWithTitle('Notepad')

# Anzahl der erfassten Fenster anzeigen
print(f'Anzahl der erfassten Fenster: {len(windows)}')

Mehrere Fenster individuell steuern

Im Folgenden wird gezeigt, wie man die Position und Größe der erfassten Fenster individuell steuert.

for i, window in enumerate(windows):
    # Jedes Fenster leicht versetzt anzeigen
    window.moveTo(100 + i*50, 100 + i*50)
    # Fenstergröße ändern
    window.resizeTo(800, 600)
    print(f'Position und Größe des {i+1}. Fensters wurden geändert')

Fenster nach bestimmten Kriterien steuern

Im Folgenden wird ein Beispiel für die Steuerung von Fenstern basierend auf bestimmten Kriterien gezeigt. Dabei werden nur Fenster gesteuert, deren Titel ein bestimmtes Schlüsselwort enthält.

for window in windows:
    if 'Untitled' in window.title:
        # Position und Größe nur für bestimmte Fenster ändern
        window.moveTo(200, 200)
        window.resizeTo(1024, 768)
        print(f'Position und Größe eines bestimmten Fensters wurden geändert')

Mit diesen Operationen können Sie mehrere Fenster effizient steuern.

Praxisbeispiel: Steuerung eines bestimmten Anwendungsfensters

Im Folgenden wird gezeigt, wie man die Steuerung eines bestimmten Anwendungsfensters in der Praxis umsetzt. In diesem Beispiel wird das Fenster des Editors Notepad gesteuert.

Notepad-Fenster erfassen

Zuerst wird das Fenster des Editors Notepad erfasst.

import pygetwindow as gw

# Notepad-Fenster erfassen
notepad_windows = gw.getWindowsWithTitle('Notepad')

if not notepad_windows:
    print('Das Notepad-Fenster wurde nicht gefunden')
else:
    notepad_window = notepad_windows[0]
    print('Das Notepad-Fenster wurde erfasst')

Notepad-Fenster an eine bestimmte Position verschieben

Im Folgenden wird gezeigt, wie man das erfasste Notepad-Fenster an eine bestimmte Position verschiebt.

if notepad_window:
    notepad_window.moveTo(300, 150)
    print('Die Position des Notepad-Fensters wurde geändert')

Größe des Notepad-Fensters ändern

Die Größe des Notepad-Fensters wird geändert.

if notepad_window:
    notepad_window.resizeTo(800, 600)
    print('Die Größe des Notepad-Fensters wurde geändert')

Notepad-Fenster in den Vordergrund bringen

Im Folgenden wird gezeigt, wie man das Notepad-Fenster in den Vordergrund bringt.

if notepad_window:
    notepad_window.activate()
    print('Das Notepad-Fenster wurde in den Vordergrund gebracht')

Mit diesen Operationen können Sie ein bestimmtes Anwendungsfenster effizient steuern.

Anwendungsbeispiele und Übungsaufgaben

Im Folgenden werden weitere Anwendungsbeispiele und Übungsaufgaben zur Vertiefung des Verständnisses vorgestellt. Diese Beispiele helfen Ihnen, Ihre Fähigkeiten zur Fenstersteuerung zu verbessern.

Anwendungsbeispiel: Mehrere Fenster ausrichten

Im Folgenden wird gezeigt, wie man mehrere Fenster auf dem Bildschirm ausrichtet. Zum Beispiel werden mehrere Notepad-Fenster kachelförmig angeordnet.

import pygetwindow as gw

# Notepad-Fenster erfassen
notepad_windows = gw.getWindowsWithTitle('Notepad')

# Fenster auf dem Bildschirm ausrichten
for i, window in enumerate(notepad_windows):
    x = (i % 3) * 300  # In 3 Spalten anordnen
    y = (i // 3) * 200  # Zeilen hinzufügen
    window.moveTo(x, y)
    window.resizeTo(300, 200)
    print(f'Das {i+1}. Fenster wurde ausgerichtet')

Übungsaufgabe 1: Fensterstatus protokollieren

Erstellen Sie ein Skript, das die Position und Größe eines Fensters regelmäßig erfasst und in einer Protokolldatei speichert.

import pygetwindow as gw
import time

# Protokolldatei öffnen
with open('window_log.txt', 'w') as log_file:
    for _ in range(10):  # 10-mal protokollieren
        for window in gw.getAllWindows():
            log_file.write(f'{window.title}: {window.topleft}, {window.size}\n')
        time.sleep(5)  # Alle 5 Sekunden protokollieren

Übungsaufgabe 2: Erkennen, ob ein Fenster geschlossen wurde

Erstellen Sie ein Skript, das erkennt, ob ein bestimmtes Fenster geschlossen wurde, und diese Information in der Konsole anzeigt.

import pygetwindow as gw
import time

# Notepad-Fenster erfassen
notepad_windows = gw.getWindowsWithTitle('Notepad')
window_titles = {window.title for window in notepad_windows}

while window_titles:
    current_windows = gw.getWindowsWithTitle('Notepad')
    current_titles = {window.title for window in current_windows}

    # Geschlossene Fenster erkennen
    closed_windows = window_titles - current_titles
    for closed_window in closed_windows:
        print(f'Fenster "{closed_window}" wurde geschlossen')

    window_titles = current_titles
    time.sleep(2)  # Alle 2 Sekunden überprüfen

Durch diese Übungen können Sie praktische Fähigkeiten zur Fenstersteuerung erwerben.

Zusammenfassung

In diesem Artikel wurde ausführlich erläutert, wie man mit Python die Position und Größe von Fenstern steuert. Beginnend mit der Installation der erforderlichen Bibliotheken wurden grundlegende Methoden, die Steuerung mehrerer Fenster gleichzeitig, praktische Beispiele für die Steuerung bestimmter Anwendungen sowie weiterführende Anwendungsbeispiele und Übungsaufgaben behandelt.

Die Fenstersteuerung mit Python ist äußerst nützlich, um die Automatisierung und Bedienung von GUI-Anwendungen zu erleichtern. Nutzen Sie die in diesem Artikel erworbenen Kenntnisse, um sie in verschiedenen Projekten anzuwenden.

Inhaltsverzeichnis