Cómo crear una ventana de pantalla completa en Tkinter

  1. Windows root.attributes('-fullscreen', True) para crear el modo de pantalla completa en Tkinter
  2. Ubuntu root.attributes("-zoomed", True) para crear el modo de pantalla completa en Tkinter
  3. Modo de pantalla completa con la barra de herramientas mostrada

En este tutorial, introduciremos cómo crear una ventana de pantalla completa en Tkinter, y cómo alternar o salir del modo de pantalla completa.

Windows root.attributes('-fullscreen', True) para crear el modo de pantalla completa en Tkinter

Los atributos tk.tk establecen los atributos específicos de la plataforma. Los atributos en Windows son,

  • -alfa
  • -transparentcolor
  • -disabled
  • -fullscreen
  • -toolwindow
  • -topmost

El modo -fullscreen especifica si la ventana está en modo pantalla completa o no.

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)

La F11 está ligada a la función toggleFullScreen.

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

El modo -fullscreen se actualiza al estado de conmutación en esta función.

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

La función QuitFullScreen (salir de la pantalla completa) abandona el modo de pantalla completa ajustando Fullscreen en False.

Podríamos usar la función lambda para hacer la solución más simple.

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

Vincula la función lambda a F11, donde el estado actual de pantalla completa puede ser leído por self.window.attributes("-fullscreen") que devuelve el estado si no se da ningún valor en el método.

Ya no necesitamos la variable de estado fullScreenState si seguimos este enfoque.

Ubuntu root.attributes("-zoomed", True) para crear el modo de pantalla completa en Tkinter

El atributo -fullscreen sólo existe en Windows pero no en Linux o MacOS. Ubuntu tiene un atributo comparable -zoomed para poner la ventana en modo de pantalla completa.

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

Modo de pantalla completa con la barra de herramientas mostrada

El modo de pantalla completa que se muestra en los códigos anteriores hace que la barra de herramientas sea invisible. Si necesitamos mostrar la barra de herramientas en la ventana, la geometría de la ventana será la misma que la del tamaño 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()

Los códigos winfo_screenwidth() y winfo_screenheight() obtienen la anchura y la altura del monitor.

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

Establece el tamaño de la ventana de la GUI igual al ancho y alto del monitor, utilizando el método geometry.

Artículo relacionado - Tkinter Geometry

  • Cómo congelar el tamaño del marco de la ventana de Tkinter
  • Cómo crear una ventana de Tkinter con un tamaño constante