HOWTO · Tkinter
Cómo crear una ventana de pantalla completa en Tkinter
Este tutorial introduce cómo crear una ventana a pantalla completa en Tkinter.
En esta página
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.