Wie man ein Vollbildfenster in Tkinter erstellt
-
Windows
root.attributes('-fullscreen', True)um den Vollbildmodus in Tkinter zu erstellen -
Ubuntu
root.attributes('-zoomed', True)um den Vollbildmodus in Tkinter zu erzeugen - 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.
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