Cómo crear una ventana de pantalla completa en Tkinter
-
Windows
root.attributes('-fullscreen', True)
para crear el modo de pantalla completa en Tkinter -
Ubuntu
root.attributes('-zoomed', True)
para crear el modo de pantalla completa en Tkinter - 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
.
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