Come creare una finestra a schermo intero in Tkinter

Jinku Hu 30 gennaio 2023
  1. Windows root.attributes('-fullscreen', True) per creare la modalità a schermo intero in Tkinter
  2. Ubuntu root.attributes('-zoomed', True) per creare la modalità a schermo intero in Tkinter
  3. Visualizzare la modalità a schermo intero con la barra degli strumenti mostrata
Come creare una finestra a schermo intero in Tkinter

In questo tutorial, introdurremo come creare una finestra a schermo intero in Tkinter, e come attivare o disattivare la modalità a schermo intero.

Windows root.attributes('-fullscreen', True) per creare la modalità a schermo intero in Tkinter

tk.Tk.attributes imposta gli attributi specifici della piattaforma. Gli attributi in Windows sono,

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

-fullscreen specifica se la finestra è a schermo intero o meno.

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 è legata alla funzione toggleFullScreen.

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

La modalità fullscreen è aggiornata allo stato toggled in questa funzione.

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

La funzione quitFullScreen esce dalla modalità a schermo intero impostando -fullscreen come False.

Potremmo usare la funzione lambda per rendere la soluzione più semplice

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")
    ),
)

Lega la funzione lambda a F11, dove lo stato corrente a schermo intero potrebbe essere letto da self.window.attributes("-fullscreen") che restituisce lo stato se non viene dato alcun valore nel metodo.

Non abbiamo più bisogno della variabile di stato fullScreenState se seguiamo questo approccio.

Ubuntu root.attributes('-zoomed', True) per creare la modalità a schermo intero in Tkinter

L’attributo -fullscreen esiste solo su Windows ma non su Linux o macOS. Ubuntu ha un attributo simile -zoomed per impostare la finestra in modalità a schermo intero.

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()

Visualizzare la modalità a schermo intero con la barra degli strumenti mostrata

La modalità a schermo intero mostrata nei codici sopra indicati rende la barra degli strumenti invisibile. Se abbiamo bisogno di mostrare la barra degli strumenti nella finestra, la geometria della finestra deve essere la stessa con le dimensioni del monitor.

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()

winfo_screenwidthwidth() e winfo_screenheight() ottengono la larghezza e l’altezza del monitor.

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

Imposta la dimensione della finestra GUI uguale alla larghezza e all’altezza del monitor, usando il metodo geometry.

Autore: 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

Articolo correlato - Tkinter Geometry