Comment créer une fenêtre plein écran dans Tkinter

Jinku Hu 30 janvier 2023
  1. Windows root.attributes('-fullscreen', True) pour créer le mode plein écran dans Tkinter
  2. Ubuntu root.attributes('-zoomed', True) pour créer le mode plein écran dans Tkinter
  3. Afficher le mode plein écran avec la barre d’outils affichée
Comment créer une fenêtre plein écran dans Tkinter

Dans ce tutoriel, nous allons introduire comment créer une fenêtre plein écran dans Tkinter, et comment basculer ou quitter le mode plein écran.

Windows root.attributes('-fullscreen', True) pour créer le mode plein écran dans Tkinter

tk.Tk.attributes définit des attributs spécifiques à la plate-forme. Les attributs dans Windows sont,

  • -alpha
  • -transparentcolor
  • -disabled
  • -fullscreen
  • -toolwindow
  • -topmost

-fullscreen spécifie si la fenêtre est en mode plein écran ou non.

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)

F11 est lié à la fonction toggleFullScreen.

def toggleFullScreen(self, event):
    self.fullScreenState = not self.fullScreenState
    self.window.attributes("-fullscreen", self.fullScreenState)

Le mode fullscreen est mis à jour à l’état basculé dans cette fonction.

def quitFullScreen(self, event):
    self.fullScreenState = False
    self.window.attributes("-fullscreen", self.fullScreenState)

La fonction quitFullScreen quitte le mode plein écran en réglant -fullscreen sur False.

Nous pourrions utiliser la fonction lambda pour rendre la solution plus 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")
    ),
)

Elle lie la fonction lambda à F11, où l’état plein écran actuel pourrait être lu par self.window.attributes("-fullscreen") qui retourne l’état si aucune valeur n’est donnée dans la méthode.

Nous n’avons plus besoin de la variable d’état fullScreenState si nous suivons cette approche.

Ubuntu root.attributes('-zoomed', True) pour créer le mode plein écran dans Tkinter

L’attribut -fullscreen n’existe que sous Windows mais pas sous Linux ou macOS. Ubuntu a un attribut comparable -zoomed pour mettre la fenêtre en mode plein écran.

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()

Afficher le mode plein écran avec la barre d’outils affichée

Le mode plein écran indiqué dans les codes ci-dessus rend la barre d’outils invisible. Si nous devons montrer la barre d’outils dans la fenêtre, la géométrie de la fenêtre doit être la même avec la taille du moniteur.

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() et winfo_screenheight() récupèrent la largeur et la hauteur du moniteur.

self.window.geometry("%dx%d" % (self.w, self.h))

Il définit la taille de la fenêtre GUI comme la largeur et la hauteur du moniteur, en utilisant la méthode geometry.

Auteur: 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

Article connexe - Tkinter Geometry