Como criar uma janela de tela cheia no Tkinter

Jinku Hu 30 janeiro 2023
  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
Como criar uma janela de 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.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - Tkinter Geometry