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
}
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