HOWTO · Tkinter
Como criar uma janela de tela cheia no Tkinter
Este tutorial introduz como criar uma janela em tela cheia no Tkinter.
Neste tutorial, vamos introduzir como criar uma janela em tela cheia no Tkinter, e como alternar ou sair do modo tela cheia.
Windows root.attributes('-fullscreen', True) para criar o modo tela cheia no Tkinter
tk.Tk.attributes define atributos específicos da plataforma. Os atributos no Windows são,
-alpha-transparentcolor-disabled-fullscreen-toolwindow-topmost
O -fullscreen especifica se a janela é ou não em modo tela cheia.
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)
O F11 está vinculado à função toggleFullScreen.
def toggleFullScreen(self, event):
self.fullScreenState = not self.fullScreenState
self.window.attributes("-fullscreen", self.fullScreenState)
O modo fullscreen é atualizado para o estado comutado nesta função.
def quitFullScreen(self, event):
self.fullScreenState = False
self.window.attributes("-fullscreen", self.fullScreenState)
A função quitFullScreen sai do modo tela cheia definindo -fullscreen para ser False.
Poderíamos utilizar a função lambda para tornar a solução mais simples.
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")
),
)
Ele liga a função lambda a F11, onde o estado atual da tela inteira pode ser lido por self.window.attributes("-fullscreen") que retorna o estado se nenhum valor for dado no método.
Nós não precisamos mais da variável de estado fullScreenState se seguirmos esta abordagem.
Ubuntu root.attributes('-zoomed', True) para criar o modo tela cheia no Tkinter
O atributo -fullscreen só existe no Windows, mas não no Linux ou macOS. O Ubuntu tem um atributo comparável -zoomed para definir a janela em modo tela cheia.
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()
Mostrar modo tela cheia com barra de ferramentas mostrada
O modo tela cheia mostrado nos códigos acima torna a barra de ferramentas invisível. Se precisarmos mostrar a barra de ferramentas na janela, a geometria da janela deve ser a mesma com o tamanho do 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_screenwidth() e winfo_screenheight() obtém a largura e a altura do monitor.
self.window.geometry("%dx%d" % (self.w, self.h))
Ele define o tamanho da janela GUI da mesma forma que a largura e altura do monitor, utilizando o método geometry.