Como criar uma janela de tela cheia no Tkinter

  1. Windows root.attributes('-fullscreen', True) para criar o modo tela cheia no Tkinter
  2. Ubuntu root.attributes('-zoomed', True) para criar o modo tela cheia no Tkinter
  3. Mostrar modo tela cheia com barra de ferramentas mostrada

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.

Artigo relacionado - Tkinter Geometry

  • Como Congelar a Moldura da Janela Tkinter Tamanho