HOWTO · Tkinter
Wie man ein Vollbildfenster in Tkinter erstellt
Dieses Tutorial führt ein, wie man in Tkinter Vollbildfenster erstellt.
Auf dieser Seite
Um ein Tkinter-Fenster im Vollbildmodus anzuzeigen, setzen Sie das Attribut -fullscreen auf True. Das Windows-Beispiel unten bindet außerdem F11 zum Umschalten des Modus und Escape zum Beenden des Vollbildmodus ein. Unter Ubuntu verwenden Sie -zoomed, um das Fenster zu maximieren. Soll das Fenster den Bildschirm ausfüllen, dabei aber Titelleiste und Rahmen behalten, legen Sie stattdessen seine Geometrie anhand der Monitorabmessungen fest.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
is_fullscreen = True
is_fullscreen = not is_fullscreen
print(is_fullscreen)
False
Dieser einfache Zustandswechsel veranschaulicht die Umschaltfunktion des Windows-Beispiels: Mit jedem Druck auf F11 ändert sich der aktuelle Zustand. Die folgenden GUI-Beispiele sind für interaktive Desktop-Sitzungen gedacht. Sie fangen tk.TclError ab, wenn kein Display geöffnet werden kann. So kann ein Headless-Runner den Vorgang beenden, ohne vorzugeben, ein Fenster angezeigt zu haben. Führen Sie die Beispiele auf der jeweils angegebenen Plattform aus, um das Fensterverhalten zu sehen.
Ein Tkinter-Fenster unter Windows im Vollbildmodus anzeigen
tk.Tk.attributes akzeptiert plattformspezifische Fensterattribute. Setzen Sie unter Windows beim Erstellen des Root-Fensters -fullscreen auf True, damit das Fenster zunächst ohne die üblichen Dekorationen erscheint. Der gespeicherte Zustand muss mit dieser Anfangseinstellung übereinstimmen. Andernfalls könnte der erste Druck auf F11 das Attribut auf den Wert setzen, den es bereits hat. Mit Escape setzen Sie sowohl den gespeicherten Zustand als auch das Fensterattribut auf False.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import os
import tkinter as tk
class FullscreenExample:
def __init__(self):
self.window = tk.Tk()
self.window.attributes("-fullscreen", True)
self.fullscreen = True
self.window.bind("<F11>", self.toggle_fullscreen)
self.window.bind("<Escape>", self.leave_fullscreen)
self.window.mainloop()
def toggle_fullscreen(self, event=None):
self.fullscreen = not self.fullscreen
self.window.attributes("-fullscreen", self.fullscreen)
def leave_fullscreen(self, event=None):
self.fullscreen = False
self.window.attributes("-fullscreen", False)
if __name__ == "__main__":
try:
FullscreenExample()
except tk.TclError as error:
display_error = str(error)
Der Parameter event ermöglicht es Tkinter, das Tastenereignis an jeden Handler weiterzugeben. Wenn Sie keine separate Zustandsvariable speichern möchten, kann ein Lambda-Ausdruck den aktuellen Attributwert auslesen und umkehren:
import os
import tkinter as tk
try:
window = tk.Tk()
window.attributes("-fullscreen", True)
window.bind(
"<F11>",
lambda event: window.attributes(
"-fullscreen", not window.attributes("-fullscreen")
),
)
window.bind("<Escape>", lambda event: window.attributes("-fullscreen", False))
window.mainloop()
except tk.TclError as error:
display_error = str(error)
Die parameterlose Form von attributes("-fullscreen") liest den aktuellen Wert aus. So müssen Sie nicht zwei Kopien des Zustands synchron halten. Binden Sie in einer größeren Anwendung Escape an Ihren üblichen Schließ-Handler, wenn das Verlassen des Vollbildmodus auch das Fenster schließen soll.
Unter Ubuntu das Fensterattribut -zoomed verwenden
Der Tk-Fenstermanager von Ubuntu unterstützt das Attribut -zoomed, um ein Fenster zu maximieren. Das entspricht nicht dem randlosen Vollbildmodus mit -fullscreen. Verwenden Sie -zoomed, wenn Sie das übliche Verhalten eines maximierten Fensters auf dem Desktop wünschen. Nutzen Sie dieses Beispiel unter Ubuntu; prüfen Sie das Verhalten gesondert, bevor Sie es auf eine andere Linux-Distribution oder macOS übertragen.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import os
import tkinter as tk
class UbuntuZoomedExample:
def __init__(self):
self.window = tk.Tk()
self.window.attributes("-zoomed", True)
self.zoomed = True
self.window.bind("<F11>", self.toggle_zoomed)
self.window.bind("<Escape>", self.leave_zoomed)
self.window.mainloop()
def toggle_zoomed(self, event=None):
self.zoomed = not self.zoomed
self.window.attributes("-zoomed", self.zoomed)
def leave_zoomed(self, event=None):
self.zoomed = False
self.window.attributes("-zoomed", False)
if __name__ == "__main__":
try:
UbuntuZoomedExample()
except tk.TclError as error:
display_error = str(error)
Wie im Windows-Beispiel initialisieren Sie den gespeicherten Zustand mit True, da das Fenster maximiert startet. Beim ersten Druck auf F11 wird das Fenster wiederhergestellt, beim nächsten erneut maximiert. Escape stellt den normalen Fensterzustand wieder her. Falls der Fenstermanager in Ihrer Umgebung dieses Attribut nicht unterstützt, verwenden Sie stattdessen den unten gezeigten Ansatz mit einem bildschirmgroßen Fenster und sichtbaren Fensterdekorationen oder prüfen Sie das Verhalten auf dem betreffenden Ubuntu-Desktop.
Den Bildschirm ausfüllen und die Fensterdekorationen beibehalten
Damit Titelleiste und Rahmen erhalten bleiben, legen Sie die angeforderte Fensterbreite und -höhe mit winfo_screenwidth() und winfo_screenheight() fest. Die Methode geometry erwartet eine Größenangabe wie 1440x900; mit +0+0 wird das Fenster in der linken oberen Bildschirmecke platziert. Fensterdekorationen beanspruchen zusätzlichen Platz. Deshalb kann das äußere Fenster etwas über den Bildschirm hinausragen, selbst wenn seine angeforderte Inhaltsfläche den Monitorabmessungen entspricht. Bei diesem Ansatz wird -fullscreen nicht verwendet und es gibt keinen Umschalter für den Vollbildmodus.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import os
import tkinter as tk
try:
window = tk.Tk()
width = window.winfo_screenwidth()
height = window.winfo_screenheight()
window.geometry(f"{width}x{height}+0+0")
window.mainloop()
except tk.TclError as error:
display_error = str(error)
Die Methoden für die Bildschirmabmessungen liefern Pixelwerte für das Display, das Tkinter erkennt. Soll das Fenster in einen Arbeitsbereich passen, der etwa Leisten oder Docks ausschließt, verwenden Sie statt der gesamten Bildschirmgröße die passenden Abmessungen dieses Arbeitsbereichs. Eine Einführung in Tkinter finden Sie unter Tkinter; Informationen zur Methode geometry bietet Tkinter Geometry Managers.