Come creare una finestra a schermo intero in Tkinter

  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

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.

Articolo correlato - Tkinter Geometry

  • Come congelare le dimensioni del telaio della finestra Tkinter
  • Come creare una finestra Tkinter con dimensione costante