Outils pour utilisateurs

Outils du site


geometrie_fenetre

Fonctions concernant la forme et la position de la fenêtre

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

Trouver les dimensions de l'écran

largeur de l'écran en pixel:

fen.winfo_screenwidth()

hauteur de l'écran en pixel:

fen.winfo_screenheight()

Obtenir la taille et la position de la fenêtre

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:

  • L = largeur de la fenêtre
  • x = séparateur
  • H = hauteur de la fenêtre
  • + = séparateur (en fait + ou -)
  • X = position du côté gauche de la fenêtre par rapport au côté gauche de l'écran
  • + = séparateur (en fait + ou -)
  • Y = position du côté haut de la fenêtre par rapport au côté haut de l'écran

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

Formater la fenêtre en taille et en position

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

Centrer la fenêtre au milieu de l'écran

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)

Empêcher le redimensionnement de la fenêtre

fen.resizable(width=False, height=False)

Mettre un titre dans le bandeau de la fenêtre

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

geometrie_fenetre.txt · Dernière modification: 2008/04/12 08:51 par tyrtamos

Outils de la page