⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).xview ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).xview ( )
DESCRIPTION.
Retourne un tuple ( ) de 2 éléments délimitant la portion horizontale visible d'une zone de dessin.
SYNTAXE.
TPL_Visible = CAN_Toile.xview ( )
TPL_Visible = ⇨ variable qui recevra la valeur [ optionnel ]
CAN_Toile ⇨ instance quelconque de tkinter.Canvas ( ) [ OBLIGATOIRE ]
.xview ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
REMARQUES.
La méthode tkinter.Canvas ( ).xview ( ) retourne un tuple ( ) contenant 2 float ( ) compris entre 0.0 et 1.0, où :
- 0.0 représente l'abscisse du bord gauche de la zone d'accessibilité de la zone de dessin et ;
- 1.0 l'abscisse du bord droit de la zone d'accessibilité de la zone de dessin.
L'intervalle (0, 1) représente donc la largeur totale, en pixels, de la zone d'accessibilité défini avec l'attribut scrollregion de la zone de dessin. Les 2 éléments du tuple ( ) désignent donc les 2 positions relatives, de début et de fin, de l'intervalle horizontal de la partie de actuellement visible de la zone de dessin. La partie de la zone de dessin comprise entre :
- 0.0 et le premier élément du tuple ( ) est partie cachée à gauche de la partie actuellement visible ;
- le premier élément du tuple ( ) et le deuxième élément du tuple ( ) est la zone actuelle de visibilité ;
- le deuxième élément du tuple ( ) et 1.0 est partie cachée à droite de la partie actuellement visible.
La largeur totale, en pixels, de la zone d'accessibilité est égale à : scrollregion [ 2 ] - scrollregion [ 0 ], scrollregion étant un attribut de la zone de dessin. La position réelle, en pixels, de l'abscisse du bord :
- gauche de la partie visible équivaut à la largeur total d'accessibilité multipliée par le premier élément du tuple ( ) et ;
- droit de la partie visible équivaut à la largeur total d'accessibilité multipliée par le deuxième élément du tuple ( ).
Les valeurs contenues dans le tuple ( ), retourné par la méthode tkinter.Canvas ( ).xview ( ), seront transmises à la barre de d’ascenseur horizontale liée à la zone de dessin via :
- l'attribut xcrollcommand de la zone de dessin et ;
- l'attribut command de la barre de d’ascenseur.
Voir aussi Tutoriel de Canvas : faire défiler une zone de dessin avec des ascenseurs pour un complément d'informations.
EXEMPLE.
import tkinter
def FNC_Action ( event ) :
CAN_Toile.xview_moveto ( SCA_Abscisse.get ( ) )
CAN_Toile.yview_moveto ( SCA_Ordonnee.get ( ) )
kregion = [ int ( kvaleur ) for kvaleur in CAN_Toile [ "scrollregion" ].split ( ) ]
klargeur = kregion [ 2 ] - kregion [ 0 ]
kdebut = int ( klargeur * CAN_Toile.xview ( ) [ 0 ] ) + kregion [ 0 ]
kfin = int ( klargeur * CAN_Toile.xview ( ) [ 1 ] ) + kregion [ 0 ]
kmessage = f"La partie horizontale visible sur { klargeur } pixels :\nva du pixel { kdebut } au pixel { kfin }."
LAB_Horizontal [ "text" ] = kmessage
khauteur = kregion [ 3 ] - kregion [ 1 ]
kdebut = int ( khauteur * CAN_Toile.yview ( ) [ 0 ] ) + kregion [ 1 ]
kfin = int ( khauteur * CAN_Toile.yview ( ) [ 1 ] ) + kregion [ 1 ]
kmessage = f"La partie verticale visible sur { khauteur } pixels :\nva du pixel { kdebut } au pixel { kfin }."
LAB_Vertical [ "text" ] = kmessage
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
SCA_Abscisse = tkinter.Scale ( TKI_Principal , orient = "horizontal" , to = 1 , resolution = .05 , command = FNC_Action )
SCA_Ordonnee = tkinter.Scale ( TKI_Principal , to = 1 , resolution = .05 , command = FNC_Action )
LAB_Horizontal = tkinter.Label ( TKI_Principal , relief = "solid" , height = 3 )
LAB_Vertical = tkinter.Label ( TKI_Principal , relief = "solid" , height = 3 )
CAN_Toile = tkinter.Canvas ( TKI_Principal , bg = "white" , scrollregion = ( -200 , -100 , 1000 , 900 ) , width = 400 , height = 250 )
for kligne in range ( 9 ) :
CAN_Toile.create_line ( 0 , ( kligne * 100 ) , 800 , ( kligne * 100 ) , fill = "black" )
CAN_Toile.create_line ( ( kligne * 100 ) , 0 , ( kligne * 100 ) , 800 , fill = "black" )
CAN_Toile.create_rectangle ( 10 , 10 , 110 , 110 , fill = "pink" )
CAN_Toile.create_rectangle ( 290 , 10 , 390 , 110 , fill = "red" )
CAN_Toile.create_rectangle ( 10 , 290 , 110 , 390 , fill = "green" )
CAN_Toile.create_rectangle ( 290 , 290 , 390 , 390 , fill = "blue" )
CAN_Toile.create_rectangle ( 180 , 130 , 570 , 170 , fill = "yellow" )
CAN_Toile.create_rectangle ( 130 , 180 , 170 , 570 , fill = "orange" )
SCA_Abscisse.grid ( row = 0 , column = 1 , sticky = "nesw" )
SCA_Ordonnee.grid ( row = 1 , column = 0 , sticky = "nesw" )
CAN_Toile.grid ( row = 1 , column = 1 , sticky = "nesw" )
LAB_Horizontal.grid ( row = 2 , column = 1 , sticky = "nesw" )
LAB_Vertical.grid ( row = 3 , column = 1 , sticky = "nesw" )
BUT_Quitter.grid ( row = 4 , column = 1 , sticky = "nesw" )
SCA_Abscisse.set ( .25 )
SCA_Ordonnee.set ( .25 )
FNC_Action ( None )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de