2016-05-12 8 views
0

Ich verwende ttk: Notebook zum Erstellen von Frames. Anfügen von untergeordneten Elementen an diese Slaves, aber es wurde nicht richtig skaliert, wenn das Listenfeld-Widget erstellt wird. ich folgenden Code:tk Notebook-Rahmen wird nicht richtig skaliert, wenn Widgets hinzugefügt werden

ttk::notebook .top.d -width 880 -height 600 -padding 5 
ttk::frame .top.d.f1; 
ttk::frame .top.d.f2; 
.top.d add .top.d.f2 -text "Memory Characterization" -padding 5 
.top.d add .top.d.f1 -text "Standard cells Characterization" -padding 5 

Wenn weitere Widgets hinzugefügt werden sie sich verstecken, bis ich es manuell Größe ändern müssen.

+0

relative Platzierung von Kind-Widgets wrt Ihr Notebook zu verwenden, wenn Sie die Breite und Höhe des Notebooks angeben , geben Sie die maximalen Abmessungen an. Möglicherweise möchten Sie sie deaktiviert lassen und dann nach dem Hinzufügen aller Widgets die Größenänderung verhindern – Jerry

Antwort

1

Wie Jerry sagte, was haben Sie erwartet, wenn Sie eine Breite und Höhe geben?

Vielleicht kommt Ihre Verwirrung von der Breitenvergrößerung beim Hinzufügen von Notebook-Registerkarten, aber dies ist beabsichtigt, da sonst nicht alle konfigurierten Registerkarten angezeigt werden können. Leider gibt es keinen Standardcode zum Scrollen von Tab-Headern.

Der folgende Code zeigt die Wirkung:

#!/usr/bin/env wish 

set conf(width) 200 
set conf(height) 100 

ttk::button .b1 -command addNewPage -text "Add" 
ttk::button .b2 -command toggleSize -text "Toggle Size" 
ttk::notebook .d -width 200 -height 100 -padding 5 
grid .b1 .b2 
grid .d - -sticky eswn 
grid columnconfigure . all -weight 1 
grid rowconfigure . 2 -weight 1 

set numpages 0 
set pages [dict create \ 
       .d.f1 "Memory Characterization" \ 
       .d.f2 "Standard cells Characterization" \ 
       .d.f3 "Just another long title" \ 
       .d.f4 "Hope this is long enough"] 

proc addNewPage {} { 
    variable pages 
    variable numpages 

    if {$numpages < [dict size $pages]} { 
     set w [lindex [dict keys $pages] ${numpages}] 
     ttk::frame $w 
     set title [dict get $pages $w] 
     .d add $w -text $title -padding 5 
     addChildren $w 
     incr numpages 
     if {$numpages >= [dict size $pages]} { 
      .b configure -state disabled 
     } 
    } 
} 

proc addChildren {w} { 
    for {set i 1} {$i < 9} {incr i} { 
     for {set j 1} {$j < 9} {incr j} { 
      grid [ttk::button $w.b$i$j -text "Button $i:$j"] -row $i -column $j -padx 5 -pady 5 
     } 
    } 
} 

proc toggleSize {} { 
    variable conf 

    if {[.d cget -width] == $conf(width)} { 
     set width 0 
     set height 0 
    } else { 
     set width $conf(width) 
     set height $conf(height) 
    } 
    .d configure -width $width -height $height 
} 
0

Ich würde empfehlen, mit Hilfe Platz Geometrie Manager