Modèle de fenêtre utilisé pour ces fonctions:
#!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import division import Tkinter class Application(Tkinter.Frame): def __init__(self, master=None): Tkinter.Frame.__init__(self, master) fen=Tkinter.Tk() app=Application(fen) fen.mainloop()
largeur de l'écran en pixel:
fen.winfo_screenwidth()
hauteur de l'écran en pixel:
fen.winfo_screenheight()
On utilise la méthode de fenêtre “.geometry()”.
Exécutée sans paramètre, elle renvoie la taille et la position de la fenêtre sous forme d'une chaîne composée de la façon suivante:
“LxH+X+Y”
Avec:
Exemple: “50×100+45+89” ⇒ L=50, H=100, X=45, Y=89
Je propose une fonction qui prend la chaine en paramètre et qui renvoie la liste des 4 valeurs converties en entier:
def geoliste(g): r=[i for i in range(0,len(g)) if not g[i].isdigit()] return [int(g[0:r[0]]),int(g[r[0]+1:r[1]]),int(g[r[1]+1:r[2]]),int(g[r[2]+1:])] # exemple d'utilisation: L,H,X,Y = geoliste(fen.geometry()) print L,H,X,Y
On utilise la méthode de fenêtre .geometry() avec comme paramètre la chaîne vue dans la fonction précédente:
fen.geometry("%dx%d%+d%+d" % (L,H,X,Y))
On utilise les fonctions précédentes:
def centrefenetre(fen): fen.update_idletasks() l,h,x,y=geoliste(fen.geometry()) fen.geometry("%dx%d%+d%+d" % (l,h,(fen.winfo_screenwidth()-l)//2,(fen.winfo_screenheight()-h)//2)) # exemple d'utilisation: centrefenetre(fen)
fen.resizable(width=False, height=False)
fen.title("mon titre de la fenêtre")
Quand on veut faire cela à l'intérieur de la classe Application, il faut revenir à la fenêtre grâce à la variable nommée “master”:
self.master.title("mon titre de la fenêtre")