Виджеты содержимого ttk::notebook
должны быть выше в порядке наложения, чем записная книжка, чтобы он работал правильно, и должен управляться самим ноутбуком, а неpack
или grid
(хотя их содержимым можно управлять любым способом);Записные книжки - это особый вид менеджера геометрии, а также виджет.(Tk имеет несколько других виджетов, которые делают это тоже.)
Чтобы исправить порядок наложения, либо создайте виджет .c
после виджета .n
, либо raise .c
после создания .n
.Обратите внимание, что дочерние элементы родительского виджета (за исключением toplevel
s и menu
s в некоторых случаях) всегда располагаются поверх родительского элемента и всегда ограничены / обрезаны их родителем.
Исправитьпроблема управления, просто не надо pack .c
;достаточно добавить его в блокнот.Вы можете упаковать или упорядочить содержимое .c
по своему усмотрению.
С этими двумя небольшими исправлениями ваш пользовательский интерфейс работает.
ttk::frame .c
ttk::frame .c.f -borderwidth 5 -relief sunken -width 200 -height 100
ttk::label .c.namelbl -text Name
ttk::entry .c.name
ttk::checkbutton .c.one -text One -variable one -onvalue 1; set one 1
ttk::checkbutton .c.two -text Two -variable two -onvalue 1; set two 0
ttk::checkbutton .c.three -text Three -variable three -onvalue 1; set three 1
ttk::button .c.ok -text Okay
ttk::button .c.cancel -text Cancel
grid .c -column 0 -row 0
grid .c.f -column 0 -row 0 -columnspan 3 -rowspan 2
grid .c.namelbl -column 3 -row 0 -columnspan 2
grid .c.name -column 3 -row 1 -columnspan 2
grid .c.one -column 0 -row 3
grid .c.two -column 1 -row 3
grid .c.three -column 2 -row 3
grid .c.ok -column 3 -row 3
grid .c.cancel -column 4 -row 3
# Notebook --> shall contain above grid in third tab
ttk::notebook .n -width 600 -height 200
ttk::frame .n.f1;
ttk::frame .n.f2;
.n add .n.f1 -text "FirstTab"
.n add .n.f2 -text "SecondTab"
.n add .c -text "GridContent"
raise .c; # <<<< YES! YOU DO WANT THIS! <<<< YES! <<<< YES! <<<< YES! <<<<
pack [label .n.f1.f1 -background red -foreground white -text "First"]
pack [label .n.f2.f2 -background red -foreground white -text "Second"]
# pack .c; # <<<< NO! YOU DO NOT WANT THIS! <<<< NO! <<<< NO! <<<< NO! <<<<
pack .n
ttk::notebook::enableTraversal .n