⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ liste des méthodes
tkinter.place ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ liste des méthodes
tkinter.place ( )
DESCRIPTION.
Gestionnaire de positionnement de précision des controles dans leur conteneur.
SYNTAXE.
widget.place ( attribut1 = valeur , ... , attributn = valeur )
widget ⇨ controle quelconque de l'interface [ OBLIGATOIRE ]
.place ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
widget.place_configure ( attribut1 = valeur , ... , attributn = valeur )
widget ⇨ controle quelconque de l'interface [ OBLIGATOIRE ]
.place_configure ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
Dès qu'un gestionnaire de placement est choisi pour placer un controle dans son conteneur, tous les autres controles de ce conteneur doivent l'utiliser. Mais il est possible d'utiliser des gestionnaire différents pour les autres conteneurs de l'applications. tkinter dispose de 3 gestionnaires de placement des controles dans leur conteneur :
- tkinter.pack ( ), un gestionnaire rapide, qui place les controles les uns à la suite des autres ;
- tkinter.grid ( ), un gestionnaire simple, qui place les controles dans une grille virtuelle ;
- tkinter.place ( ), un gestionnaire précis, qui place les controles librement.
La méthode tkinter.place ( ), gère le placement des controles de façon unique, précise et librement sur toute la surface du conteneur. Ce gestionnaire de placement permet d'obtenir des interfaces d'une grande qualité avec un design professionnel, en indiquant, pour chaque controles, les coordonnées de son emplacement et ses dimensions.
LISTE DES ATTRIBUTS DU POSITIONNEMENT.
anchor = ancre
Indique la position des coordonnées par rapport au controle. ancre doit être "n", "ne", "e", "se", "s", "sw", "w" ou "nw" Par défaut anchor = "nw", c'est à dire que les coordonnées x = abscisse et y = ordonnee, ou relx = abscisse et rely = ordonnee, correspondent au coin haut-gauche du controle.
bordermode = mode
Indique si les autres valeurs d’attributs prennent en compte la taille de la bordure du conteneur. Si bordermode = "inside" alors les valeurs font référence à l'intérieur de la bordure (valeur par défaut). Mais si bordermode = "outside" alors les valeurs partent de bord physique du conteneur.
height = taille
Indique la taille de la hauteur du controle. taille doit être un int ( ) positif et est exprimé en fonction du système d'unité précisé, en pixels par défaut.
ipadx = taille
Indique la taille de la marge supplémentaire à ajouter à droite et à gauche, à l'intérieur du controle. taille est int ( ) positif.
ipady = taille
Indique la taille de la marge supplémentaire à ajouter en haut et en bas, à l'intérieur du controle. taille est un int ( ) positif.
padx = taille
Indique la taille de la marge supplémentaire à ajouter à droite et à gauche, à l’extérieur du controle. taille est un int ( ) positif.
pady = taille
Indique la taille de la marge supplémentaire à ajouter en haut et en bas, à l’extérieur du controle. taille est un int ( ) positif.
relheight = ratio
Indique la hauteur relative du controle par rapport à la hauteur du conteneur. ratio est un float ( ) où 1.0 représente la hauteur du conteneur.
relwidth = ratio
Indique la largeur relative du controle par rapport à la largeur du conteneur. ratio est un float ( ) où 1.0 représente la largeur du conteneur.
relx = abscisse
Indique l'abscisse relative, et en fonction de la valeur de l'attribut anchor, du controle par rapport à la largeur du conteneur. abscisse est un float ( ) où 1.0 représente la largeur du conteneur.
rely = ordonnee
Indique l'ordonnée relative, et en fonction de la valeur de l'attribut anchor, du controle par rapport à la hauteur du conteneur. ordonnee est un float ( ) où 1.0 représente la hauteur du conteneur.
width = taille
Indique la taille de la largeur du controle. taille doit être un int ( ) positif et est exprimé en fonction du système d'unité précisé, en pixels par défaut.
x = abscisse
Indique l'abscisse en fonction de la valeur de l'attribut anchor, du controle. abscisse est un int ( ) et est exprimé en fonction du système d'unité précisé, en pixels par défaut. x = 0 équivaut à la bordure gauche du conteneur et les valeurs positives éloignent le controle vers la droite.
y = ordonnee
Indique l'ordonne en fonction de la valeur de l'attribut anchor, du controle. ordonnee est un int ( ) et est exprimé en fonction du système d'unité précisé, en pixels par défaut. y = 0 équivaut à la bordure haute du conteneur et les valeurs positives éloignent le controle vers la bas.
EXEMPLES.
1. Avec des valeurs absolues.
import tkinter
def FNC_Afficher ( event ) :
if BUT_Etat [ "text" ] == "Afficher" : return
LAB_Test.place_configure ( width = int ( SCA_Largeur.get ( ) ) )
LAB_Test.place_configure ( height = int ( SCA_Hauteur.get ( ) ) )
LAB_Test.place ( x = int ( SCA_Abscisse.get( ) ) )
LAB_Test.place ( y = int ( SCA_Ordonnee.get ( ) ) )
LAB_Test.place ( anchor = SPI_Position.get ( ) )
BOX_Code.delete ( 0 , "end" )
for kattribut , kvaleur in LAB_Test.place_info ( ).items ( ) : BOX_Code.insert ( 0 , f"{ kattribut } = { kvaleur }" )
def FNC_Effacer ( ) :
if BUT_Etat [ "text" ] == "Effacer" :
BUT_Etat [ "text" ] = "Afficher"
LAB_Test.place_forget ( )
BOX_Code [ "background" ] = "lavender"
BOX_Code.delete ( 0 , "end" )
BOX_Code.insert ( 0 , "LISTE DES CONTROLES." )
BOX_Code.insert ( "end", "" )
for kcontrole in TKI_Principal.place_slaves ( ) : BOX_Code.insert ( "end" , kcontrole )
else :
BUT_Etat [ "text" ] = "Effacer"
BOX_Code [ "background" ] = "aqua"
FNC_Afficher ( None )
TKI_Principal = tkinter.Tk ( )
TKI_Principal.geometry ( "800x300+100+50" )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Etat = tkinter.Button ( TKI_Principal , text = "Afficher" , command = FNC_Effacer )
SCA_Largeur = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = 1 , to = 450 , command = FNC_Afficher )
SCA_Hauteur = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = 1 , to = 350 , command = FNC_Afficher )
SCA_Abscisse = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -100 , to = 450 , command = FNC_Afficher )
SCA_Ordonnee = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -100 , to = 350 , command = FNC_Afficher)
SPI_Position = tkinter.Spinbox ( TKI_Principal , wrap = True , command = lambda : FNC_Afficher ( None ) )
BOX_Code = tkinter.Listbox ( TKI_Principal , fg = "blue" , bg = "white" , relief = "groove" )
FRM_Zone = tkinter.LabelFrame ( TKI_Principal , text = " --- ZONE DE TEST --- " )
LAB_Test = tkinter.Label ( FRM_Zone , text = "TEST" , fg = "blue" , bg = "aqua" , relief = "solid" )
BOX_Code.place_configure ( x = 0 , y = 0 , width = 200 , height = 250 )
BUT_Quitter.place_configure ( x = 0 , y = 250 , width = 200 , height = 50 )
FRM_Zone.place_configure ( x = 200 , y = 0 , width = 400 , height = 300 )
tkinter.Label ( TKI_Principal , text = "width" , justify = "right" ).place ( x = 650 , y = 40 , anchor = "se" )
SCA_Largeur.place ( x = 650 , y = 40 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "height" , justify = "right" ).place ( x = 650 , y = 90 , anchor = "se" )
SCA_Hauteur.place ( x = 650 , y = 90 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "x" , justify = "right" ).place ( x = 650 , y = 140 , anchor = "se" )
SCA_Abscisse.place ( x = 650 , y = 140 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "y" , justify = "right" ).place ( x = 650 , y = 190 , anchor = "se" )
SCA_Ordonnee.place ( x = 650 , y = 190 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "anchor" , justify = "right" ).place ( x = 650 , y = 240 , anchor = "se" )
SPI_Position.place ( x = 650 , y = 240 , width = 150 , anchor = "sw" )
BUT_Etat.place_configure ( x = 600 , y = 250 , width = 200 , height = 50 )
SCA_Largeur.set ( 120 )
SCA_Hauteur.set ( 50 )
SCA_Abscisse.set ( 0 )
SCA_Ordonnee.set ( 0 )
SPI_Position [ "values" ] = ( "n" , "ne" , "e" , "se" , "s" , "sw" , "w" , "nw" )
SPI_Position.delete ( 0 , "end" )
SPI_Position.insert ( 0 , "nw" )
BOX_Code [ "background" ] = "aqua"
FNC_Effacer ( )
TKI_Principal.mainloop ( )
2. Avec des valeurs relatives.
import tkinter
def FNC_Afficher ( event ) :
LAB_Test.place_configure ( relwidth = float ( SCA_Largeur.get ( ) ) )
LAB_Test.place_configure ( relheight = float ( SCA_Hauteur.get ( ) ) )
LAB_Test.place ( relx = float ( SCA_Abscisse.get( ) ) )
LAB_Test.place ( rely = float ( SCA_Ordonnee.get ( ) ) )
LAB_Test.place ( anchor = SPI_Position.get ( ) )
TKI_Principal = tkinter.Tk ( )
TKI_Principal.geometry ( "670x300+100+50" )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
SCA_Largeur = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = 0.0 , to = 1.2 , resolution = 0.01 , command = FNC_Afficher )
SCA_Hauteur = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = 0.0 , to = 1.2 , resolution = 0.01 , command = FNC_Afficher )
SCA_Abscisse = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -0.2 , to = 1.2 , resolution = 0.01 , command = FNC_Afficher )
SCA_Ordonnee = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -0.2 , to = 1.2 , resolution = 0.01 , command = FNC_Afficher)
SPI_Position = tkinter.Spinbox ( TKI_Principal , wrap = True , command = lambda : FNC_Afficher ( None ) )
FRM_Zone = tkinter.LabelFrame ( TKI_Principal , text = " --- ZONE DE TEST --- " )
LAB_Test = tkinter.Label ( FRM_Zone , text = "TEST" , fg = "blue" , bg = "aqua" , relief = "solid" )
tkinter.Label ( TKI_Principal , text = "relwidth" , justify = "right" ).place ( x = 70 , y = 40 , anchor = "se" )
SCA_Largeur.place ( x = 70 , y = 40 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "relheight" , justify = "right" ).place ( x = 70 , y = 90 , anchor = "se" )
SCA_Hauteur.place ( x = 70 , y = 90 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "relx" , justify = "right" ).place ( x = 70 , y = 140 , anchor = "se" )
SCA_Abscisse.place ( x = 70 , y = 140 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "rely" , justify = "right" ).place ( x = 70 , y = 190 , anchor = "se" )
SCA_Ordonnee.place ( x = 70 , y = 190 , width = 150 , anchor = "sw" )
tkinter.Label ( TKI_Principal , text = "anchor" , justify = "right" ).place ( x = 70 , y = 240 , anchor = "se" )
SPI_Position.place ( x = 70 , y = 240 , width = 150 , anchor = "sw" )
BUT_Quitter.place_configure ( x = 20 , y = 250 , width = 200 , height = 50 )
FRM_Zone.place_configure ( x = 250 , y = 0 , width = 400 , height = 300 )
SCA_Largeur.set ( 0.2 )
SCA_Hauteur.set ( 0.2 )
SCA_Abscisse.set ( 0.0 )
SCA_Ordonnee.set ( 0.0 )
SPI_Position [ "values" ] = ( "n" , "ne" , "e" , "se" , "s" , "sw" , "w" , "nw" )
SPI_Position.delete ( 0 , "end" )
SPI_Position.insert ( 0 , "nw" )
FNC_Afficher ( None )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de