Wie man ein Vollbildfenster in Tkinter erstellt

  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

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.

Verwandter Artikel - Tkinter Geomertry

  • Wie man ein Tkinter-Fenster mit konstanter Größe erstellt
  • comments powered by Disqus