Wie man ein Vollbildfenster in Tkinter erstellt

Jinku Hu 30 Januar 2023
  1. Windows root.attributes('-fullscreen', True) um den Vollbildmodus in Tkinter zu erstellen
  2. Ubuntu root.attributes('-zoomed', True) um den Vollbildmodus in Tkinter zu erzeugen
  3. Vollbildmodus mit eingeblendeter Symbolleiste anzeigen
Wie man ein Vollbildfenster in Tkinter erstellt

In diesem Tutorial wird vorgestellt, wie man Vollbildfenster in Tkinter erstellt und wie man den Vollbildmodus umschaltet oder verlässt.

Windows root.attributes('-fullscreen', True) um den Vollbildmodus in Tkinter zu erstellen

tk.Tk.attributes setzt plattformspezifische Attribute. Die Attribute in Windows sind,

  • -alpha
  • -transparentcolor
  • -disabled
  • -fullscreen
  • -toolwindow
  • -topmost

-fullscreen gibt an, ob das Fenster im Vollbildmodus ist oder nicht.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-fullscreen", True)
        self.fullScreenState = False
        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-fullscreen", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)


if __name__ == "__main__":
    app = Fullscreen_Example()
self.window.bind("<F11>", self.toggleFullScreen)

F11 ist an die Funktion toggleFullScreen gebunden.

def toggleFullScreen(self, event):
    self.fullScreenState = not self.fullScreenState
    self.window.attributes("-fullscreen", self.fullScreenState)

Der fullscreen-Modus wird in dieser Funktion auf den geschalteten Zustand aktualisiert.

def quitFullScreen(self, event):
    self.fullScreenState = False
    self.window.attributes("-fullscreen", self.fullScreenState)

Die Funktion quitFullScreen verläßt den Vollbildmodus, indem der -fullscreen auf False gesetzt wird.

Wir könnten die lambda Funktion benutzen, um die Lösung einfacher zu machen.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-fullscreen", True)
        self.window.bind(
            "<F11>",
            lambda event: self.window.attributes(
                "-fullscreen", not self.window.attributes("-fullscreen")
            ),
        )
        self.window.bind(
            "<Escape>", lambda event: self.window.attributes("-fullscreen", False)
        )

        self.window.mainloop()


if __name__ == "__main__":
    app = Fullscreen_Example()
self.window.bind(
    "<F11>",
    lambda event: self.window.attributes(
        "-fullscreen", not self.window.attributes("-fullscreen")
    ),
)

Es bindet die lambda Funktion an F11, wo der aktuelle Vollbild-Status von self.window.attributes("-fullscreen") gelesen werden kann, der den Status zurückgibt, wenn in der Methode kein Wert angegeben wird.

Wir brauchen die Zustandsvariable fullScreenState nicht mehr, wenn wir diesem Ansatz folgen.

Ubuntu root.attributes('-zoomed', True) um den Vollbildmodus in Tkinter zu erzeugen

-fullscreen Attribut existiert nur unter Windows, nicht aber unter Linux oder macOS. Ubuntu hat ein vergleichbares Attribut -zoomed um das Fenster in den Vollbildmodus zu setzen.

import tkinter as tk


class Ubuntu_Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-zoomed", True)
        self.fullScreenState = False
        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-zoomed", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-zoomed", self.fullScreenState)


if __name__ == "__main__":
    app = Ubuntu_Fullscreen_Example()

Vollbildmodus mit eingeblendeter Symbolleiste anzeigen

Der in den obigen Codes dargestellte Vollbildmodus macht die Symbolleiste unsichtbar. Wenn wir die Symbolleiste im Fenster anzeigen müssen, muss die Geometrie des Fensters mit der Monitorgröße übereinstimmen.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)

        self.w, self.h = (
            self.window.winfo_screenwidth(),
            self.window.winfo_screenheight(),
        )
        self.window.geometry("%dx%d" % (self.w, self.h))

        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-fullscreen", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)


if __name__ == "__main__":
    app = Fullscreen_Example()
self.w, self.h = self.window.winfo_screenwidth(), self.window.winfo_screenheight()

Mit winfo_screenwidth() und winfo_screenheight() erhalten wir die Breite und Höhe des Monitors.

self.window.geometry("%dx%d" % (self.w, self.h))

Es setzt die Größe des GUI-Fensters gleich der Breite und Höhe des Monitors, indem es die geometry Methode verwendet.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Tkinter Geometry