web-dev-qa-db-fra.com

Afficher le mode plein écran sur Tkinter

Comment puis-je faire un cadre dans l'affichage Tkinter en mode plein écran? J'ai vu ce code, et c'est très utile…:

>>> import Tkinter
>>> root = Tkinter.Tk()
>>> root.overrideredirect(True)
>>> root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))

… Mais est-il possible d'éditer le code pour que frapper Esc rend automatiquement la fenêtre "Restore down"?

37
DRdr

Cela crée une fenêtre plein écran. Appuyez sur Escape pour redimensionner la fenêtre à '200x200 + 0 + 0' par défaut. Si vous déplacez ou redimensionnez la fenêtre, Escape bascule entre la géométrie actuelle et la géométrie précédente.

import Tkinter as tk

class FullScreenApp(object):
    def __init__(self, master, **kwargs):
        self.master=master
        pad=3
        self._geom='200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
        master.bind('<Escape>',self.toggle_geom)            
    def toggle_geom(self,event):
        geom=self.master.winfo_geometry()
        print(geom,self._geom)
        self.master.geometry(self._geom)
        self._geom=geom

root=tk.Tk()
app=FullScreenApp(root)
root.mainloop()
28
unutbu

Je pense que c'est ce que vous recherchez:

Tk.attributes("-fullscreen", True)  # substitute `Tk` for whatever your `Tk()` object is called

Vous pouvez utiliser wm_attributes au lieu de attributes également.

Ensuite, liez simplement la touche d'échappement et ajoutez-la au gestionnaire:

Tk.attributes("-fullscreen", False)

Une réponse à une autre question y fait allusion (avec wm_attributes). C'est comme ça que j'ai découvert. Mais, personne n'est sorti directement et a dit que c'était la réponse pour une raison quelconque. J'ai donc pensé que cela valait la peine d'être publié.

Voici un exemple de travail (testé sur Xubuntu 14.04) qui utilise F11 pour activer et désactiver le plein écran et où escape le désactivera uniquement:

import sys
if sys.version_info[0] == 2:  # Just checking your Python version to import Tkinter properly.
    from Tkinter import *
else:
    from tkinter import *


class Fullscreen_Window:

    def __init__(self):
        self.tk = Tk()
        self.tk.attributes('-zoomed', True)  # This just maximizes it so we can see the window. It's nothing to do with fullscreen.
        self.frame = Frame(self.tk)
        self.frame.pack()
        self.state = False
        self.tk.bind("<F11>", self.toggle_fullscreen)
        self.tk.bind("<Escape>", self.end_fullscreen)

    def toggle_fullscreen(self, event=None):
        self.state = not self.state  # Just toggling the boolean
        self.tk.attributes("-fullscreen", self.state)
        return "break"

    def end_fullscreen(self, event=None):
        self.state = False
        self.tk.attributes("-fullscreen", False)
        return "break"

if __== '__main__':
    w = Fullscreen_Window()
    w.tk.mainloop()

Si vous souhaitez également masquer un menu, je n'ai trouvé que deux façons de le faire. L'une consiste à le détruire. L'autre consiste à créer un menu vide pour basculer entre.

self.tk.config(menu=self.blank_menu)  # self.blank_menu is a Menu object

Ensuite, remettez-le dans votre menu lorsque vous souhaitez qu'il réapparaisse.

self.tk.config(menu=self.menu)  # self.menu is your menu.
66
Shule

Je pense que si vous recherchez uniquement le plein écran, pas besoin de définir la géométrie ou la taille maximale, etc.

Il vous suffit de faire ceci:

-Si vous travaillez sur Ubuntu:

root=tk.Tk()
root.attributes('-zoomed', True)

-et si vous travaillez sur Windows:

root.state('zoomed')

Maintenant, pour basculer entre le plein écran, pour le réduire à la barre des tâches, vous pouvez utiliser:

Root.iconify()
11
Harsh Dobariya

Cela créera une fenêtre complètement en plein écran sur mac (sans barre de menu visible) sans gâcher les raccourcis clavier

import tkinter as tk
root = tk.Tk()

root.overrideredirect(True)
root.overrideredirect(False)
root.attributes('-fullscreen',True)


root.mainloop()
7
Trav