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"?
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()
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.
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()
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()