Я хочу поместить разделитель между двумя кадрами в моем окне. Я хочу использовать для этого ttk :: separator .
Мой код:
proc create_layout_changing_frame {} {
set ch_frm ".prop_menu.main_frame.changing_frame"
global _PROP
global _DB
global _prop_attr
set _frame_row 0
set _size_text_lbl 20
set _size_full_entry 85
set _size_brw_button 3
# The layout file frame
set frm [frame $ch_frm.layout_file]
set lbl [label $ch_frm.layout_file.label -text "Layout file:" -width $_size_text_lbl]
set entr [entry $ch_frm.layout_file.entry -textvariable _prop_attr(layout_file) -width [expr $_size_full_entry-$_size_brw_button]]
set browse [button $ch_frm.layout_file.browse -image icon_browse -command {get_layout_file}]
set sep [label $ch_frm.layout_file.blank -text ""]
grid $lbl -row 1 -column 1 -sticky nsw
grid $entr -row 1 -column 2 -sticky nse
grid $browse -row 1 -column 3 -sticky nsw
grid $sep -row 2 -column 1 -sticky nsw -columnspan 3
grid $frm -row [incr _frame_row] -column 1 -sticky nsew
# The input instance frame
# if not root - root isn't driven
if {$_DB(blocks,$_prop_attr(block),father) != -1} {
set frm [frame $ch_frm.input_instance]
set lbl [label $ch_frm.input_instance.label -text "Input Instance:" -width $_size_text_lbl]
set warn [label $ch_frm.input_instance.warn -text "" -fg "red"]
set entr [entry $ch_frm.input_instance.entry -textvariable _prop_attr(input_instance) -width $_size_full_entry -validate focusout -vcmd {check_input_instance}]
grid $lbl -row 1 -column 1 -sticky nsw
grid $entr -row 1 -column 2 -sticky nse
grid $warn -row 2 -column 1 -sticky nsew -columnspan 2
grid $frm -row [incr _frame_row] -column 1 -sticky nsew
}
# The output instance frame
set frm [frame $ch_frm.output_instance]
set lbl [label $ch_frm.output_instance.label -text "Output Instances:" -width $_size_text_lbl]
set warn [label $ch_frm.output_instance.warn -text "" -fg "red"]
set entr [entry $ch_frm.output_instance.entry -textvariable _prop_attr(output_instance) -width $_size_full_entry -validate focusout -vcmd {check_output_instance}]
grid $lbl -row 1 -column 1 -sticky nswe
grid $entr -row 1 -column 2 -sticky nse
grid $warn -row 2 -column 1 -sticky nsew -columnspan 2
grid $frm -row [incr _frame_row] -column 1 -sticky nsew
# The driving instance frame
... There is a full definition of a frame here, it's a little complicated so I don't put it, But it works fine...
# The power and ground pattern frame
set sep [ttk::separator $ch_frm.separator1 -orient horizontal]
set frm [frame $ch_frm.pwd_gnd_pattern]
set lblpow [label $ch_frm.pwd_gnd_pattern.powlbl -text "Power Pattern:" -width $_size_text_lbl]
set entrpow [entry $ch_frm.pwd_gnd_pattern.powentr -textvariable _prop_attr(power_pattern) -width $_size_full_entry]
set sep [label $ch_frm.pwd_gnd_pattern.blank -text ""]
set lblgnd [label $ch_frm.pwd_gnd_pattern.gndlbl -text "Ground Pattern:" -width $_size_text_lbl]
set entrgnd [entry $ch_frm.pwd_gnd_pattern.gndentr -textvariable _prop_attr(ground_pattern) -width $_size_full_entry]
grid $lblpow -row 1 -column 1 -sticky nsw
grid $entrpow -row 1 -column 2 -sticky nse
grid $sep -row 2 -column 1 -sticky nswe -columnspan 2
grid $lblgnd -row 3 -column 1 -sticky nsw
grid $entrgnd -row 3 -column 2 -sticky nse
grid $sep -row [incr _frame_row] -column 1 -sticky ew -pady 4
grid $frm -row [incr _frame_row] -column 1 -sticky nsew
make_all_layout_checks
}
Разделитель вообще не отображается в окне, вот изображение. Сверху так выглядит и сейчас, а снизу красный кружок указывает место, где я бы хотел поставить разделитель.
Кроме того, данный код имеет дело только с рамкой, которая находится внутри бороздчатой границы, все остальные элементы рассматриваются в другом месте.
Где проблема?