panedwindow

 

Exemple minimal (testé OK en 8.4.13) :

    set monpw [panedwindow .monpw -cursor X_cursor -showhandle true]
    pack $monpw -expand true -fill both
    set fGauche [frame .fGauche]
    button $fGauche.bGros -text "Gros" -width 20
    pack $fGauche.bGros
    $monpw add $fGauche
    set fDroite [frame .fDroite]
    button $fDroite.bPetit -text "Petit"
    pack $fDroite.bPetit
    $monpw add $fDroite

Exemple de ce qui NE MARCHE PAS (8.4.13) :

    set fGauche [frame .fGauche]
    button $fGauche.bGros -text "Gros" -width 20
    pack $fGauche.bGros
    set monpw [panedwindow .monpw -cursor X_cursor -showhandle true]
    pack $monpw -expand true -fill both
    $monpw add $fGauche
    set fDroite [frame .fDroite]
    button $fDroite.bPetit -text "Petit"
    pack $fDroite.bPetit
    $monpw add $fDroite

Ici, c'est la déclaration de la frame AVANT le panedwindow qui pose problème. La commande add du paned window prend bien en compte la taille du gros bouton. Mais rien n'est affiché. on peut vérifier que, sur la zone gauche, c'est le curseur X qui s'affiche (=> .fGauche et bGros bien absents).

Voici un exemple un peu plus complet avec des widgets 8.4 . Sa structure permet un remplacement simple de la liste à charger dans la variable opts par la structure foreach afin de tester des options du widget :

    wm minsize . 400 400
    set wc 1
    foreach opts {
	{-showhandle true -orient horizontal -background pink -opaqueresize true -height 200 -width 800}
	{-showhandle false -orient vertical -background blue -relief raised}
	{-showhandle true -orient horizontal -background green -heigh 50 -sashcursor clock}
    } {
	set pw [eval panedwindow .pw_$wc $opts]
	$pw add [labelframe .a_$wc -text Gauche] [labelframe .b_$wc -text Centre] [labelframe .c_$wc -text Droite]
	incr wc
	pack $pw -fill both -expand yes

	set previous [lindex [$pw panes] end]
	foreach pane [$pw panes] {
	    label $pane.l -text Orientation
	    pack $pane.l -fill both -expand yes
	    button $pane.b -text $pane -relief raised -borderwidth 2 -command [list $pw paneconfigure $pane -before $previous]
	    pack $pane.b -fill both -expand yes
	    spinbox $pane.sb -values "Gauche Centre Droite"
	    pack $pane.sb -fill both -expand yes
	    set previous $pane
	}
    }

En cliquant sur le bouton .c_X , on doit voir circuler les éléments gérés par le panedwindow.


Catégorie Manuel Tcl/Tk