⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).xview_scroll ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).xview_scroll ( )
DESCRIPTION.
Fait défiler horizontalement la zone de dessin dans la zone de visibilité.
SYNTAXE.
CAN_Toile.xview_scroll ( facteur , bloc )
CAN_Toile ⇨ instance quelconque de tkinter.Canvas ( ) [ OBLIGATOIRE ]
.xview_scroll ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
facteur ⇨ nombre de blocs à déplacer [ OBLIGATOIRE ]
bloc ⇨ nature des blocs à déplacer [ OBLIGATOIRE ]
REMARQUES.
facteur est un int ( ). Si facteur est :
- positif, la zone de dessin défile vers la droite ;
- négatif, la zone de dessin défile vers la gauche ;
- 0, la zone de dessin ne défile pas.
bloc est un str ( ) pouvant avoir uniquement l'une des valeurs "units" ou "pages". Si bloc vaut :
- "units", le défilement est égal à facteur * xscrollincrement ;
- "pages", le défilement est égal à 90 % de scrollregion [ 2 ] - scrollregion [ 0 ] ;
pixels à chaque appel de la méthode tkinter.Canvas ( ).xview_scroll ( ). "units" produit donc un défilement, plus ou moins rapide mais doux, de la zone de dessin alors que "pages" produit un saut de bord à bord, mais sans défilement visuel, de la zone de dessin.
A noter aussi que si bloc bloc vaut "pages", la valeur du déplacement est constant, quelque soit la valeur absolue de facteur, mais que le signe de facteur (- ou +) détermine le sens du déplacement : - vers la gauche, + vers la droite.
EXEMPLE.
import tkinter
def FNC_Action ( ) :
if TKV_Abscisse.get ( ) : CAN_Toile.xview_scroll ( SCA_Abscisse.get ( ) , "units" )
if TKV_Ordonnee.get ( ) : CAN_Toile.yview_scroll ( SCA_Ordonnee.get ( ) , "units" )
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 ]
if kdebut <= kregion [ 0 ] or kfin >= kregion [ 2 ] : SCA_Abscisse.set ( SCA_Abscisse.get ( ) * -1 )
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 ]
if kdebut <= kregion [ 1 ] or kfin >= kregion [ 3 ] : SCA_Ordonnee.set ( SCA_Ordonnee.get ( ) * -1 )
kmessage = f"La partie verticale visible sur { khauteur } pixels :\nva du pixel { kdebut } au pixel { kfin }."
LAB_Vertical [ "text" ] = kmessage
TKI_Principal.after ( 30 , FNC_Action )
TKI_Principal = tkinter.Tk ( )
TKV_Abscisse = tkinter.IntVar ( )
TKV_Ordonnee = tkinter.IntVar ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
SCA_Abscisse = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -10 , to = 10 )
SCA_Ordonnee = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = -10 , to = 10 )
CKB_Abscisse = tkinter.Checkbutton ( TKI_Principal , text = "⇦⇨" , variable = TKV_Abscisse , indicatoron = False )
CKB_Ordonnee = tkinter.Checkbutton ( TKI_Principal , text = "⇩⇧" , variable = TKV_Ordonnee , indicatoron = False )
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" )
CAN_Toile.grid ( row = 0 , column = 0 , columnspan = 2 , sticky = "nesw" )
SCA_Abscisse.grid ( row = 1 , column = 0 , sticky = "nesw" )
CKB_Abscisse.grid ( row = 1 , column = 1 , sticky = "nesw" )
SCA_Ordonnee.grid ( row = 2 , column = 0 , sticky = "nesw" )
CKB_Ordonnee.grid ( row = 2 , column = 1 , sticky = "nesw" )
LAB_Horizontal.grid ( row = 3 , column = 0 , columnspan = 2 , sticky = "nesw" )
LAB_Vertical.grid ( row = 4 , column = 0 , columnspan = 2 , sticky = "nesw" )
BUT_Quitter.grid ( row = 5 , column = 0 , columnspan = 2 , sticky = "nesw" )
CAN_Toile [ "xscrollincrement" ] = 1
CAN_Toile [ "yscrollincrement" ] = 1
CKB_Abscisse.toggle ( )
CKB_Ordonnee.toggle ( )
FNC_Action ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de