将组合框放在ttk :: notebook的框架上

时间:2018-05-08 20:17:01

标签: tcl tk

我想将一个组合框放在tk笔记本的框架上。我使用网格排列框架和组件。当我将组合框放在框架上时,背景中的框架消失。这可能是什么原因?我的代码如下:

ttk::notebook .f.n  -width 1600 -height 800
frame .f.n.f1
frame .f.n.f2 
.n add .f.n.f1 -text "TabOne" 
.n add .f.n.f2 -text "TabTwo"
grid .f.n -sticky news -row 0 -column 0
#Code to create a side menu
 grid [frame .f.n.TabOne.m -width 200 -height 800] -sticky news -row 0 -column 0
 grid [ttk::combobox .f.n.Tabone.m.d -values {"val 1" "val 2"}] -sticky news

1 个答案:

答案 0 :(得分:0)

要将组合框放在选项卡的窗格中,您必须使其成为窗口小部件的子项(通常是一个框架 - 在您的情况下绝对如此 - 但不一定),这是选项卡的内部。否则它不在里面,而只是堆叠在顶部

始终正确使用此功能的最简单方法是从引用其父项的变量构建窗口小部件名称。通过惯例,您存储窗口小部件构造函数返回的名称,然后通过简单连接构建子名称,如下所示:

set nb [ttk::notebook .f.n -width 1600 -height 800]
set tab_one [frame $nb.f1]
set tab_two [frame $nb.f2]
$nb add $tab_one -text "TabOne" 
$nb add $tab_two -text "TabTwo"
grid $nb -sticky news -row 0 -column 0

#Code to create a side menu
grid [frame $tab_one.m -width 200 -height 800] -sticky news -row 0 -column 0
grid [ttk::combobox $tab_one.m.d -values {"val 1" "val 2"}] -sticky news