Tk教程
TK指工具包,它提供了跨平台的GUI控件,它可以建立一个图形用户界面。它开发者是John Ousterhout,以Tcl脚本语言的扩展。 TK仍然是开发独立于Tcl的版本,它在同步使用TCL V8.0。
Tk的特点
它可在Linux,Mac OS,Unix和Microsoft Windows操作系统运行,支持跨平台。
- 它是开源的。
- 它提供了较高水平的可扩展。
- 它是可定制的。
- 它是可配置的。
- 它提供了大量的小部件。
- 它可与多个其他动态语言中使用,而不只是Tcl。
- GUI看起来完全跨平台。
建于Tk的应用
大量成功的应用使用Tcl/Tk构建成。
- 仪表板软件用户界面
- 构成GUI的关系数据库
- 专案GUI的关系数据库
- 软件/硬件系统设计
- Xtask - 任务管理
- 音乐学使用Tcl和Tk
- 日历应用程序
- Tk mail
- Tk Debugger
TK环境设置 - Tk教程
一般所有Mac和Linux MAC配备了预装Tk。如果它不可用,或者需要最新版本,那么可能需要安装它。Windows上没有预装Tcl/Tk,可能需要使用特定的二进制安装它。
Tk解释器
这仅仅是一个小程序,可以键入Tk命令,并逐行执行。它停止执行的情况下,它遇到错误不能执行编译一个TCL文件。
让我们创建一个 helloWorld.tcl文件,如下所示。运行在选择的平台上的第一个程序。
#!/usr/bin/wish
grid [ttk::button .mybutton -text "Hello World"]
下面的部分仅说明如何在每个可用的平台上安装Tcl/Tk。
在Windows上安装
从可用有效的Tcl/Tk二进制文件列表下载最新版本的Windows安装程序。活跃的Tcl / Tk社区版可供免费供个人使用。
运行下载的可执行文件安装Tcl和Tk,可以按照屏幕上的说明进行。
现在我们可以构建并切换到包含该文件的文件夹中,然后使用以下步骤运行Tcl文件helloWorld.tcl
C:\Tcl> wish helloWorld.tcl
按回车键,我们会看到一个输出,如下图所示。
在Linux上安装
大多数Linux操作系统自带的内置Tk,可以马上在这些系统使用。在一些情况下,它可能不可用,那可以使用下面的命令来下载和安装Tcl-TK。
$ yum install tcl tk
现在我们可以构建并通过使用cd命令切换到文件夹包含该文件,然后使用以下步骤运行Tcl文件helloWorld.tcl
$ wish helloWorld.tcl
按回车键,我们会看到类似以下的输出。
在基于Debian的系统安装
在情况下,如果无法提供预建在操作系统,可以使用下面的命令来下载和安装Tcl-TK。
$ sudo apt-get install tcl tk
现在我们可以构建并通过使用cd命令切换到文件夹包含该文件,然后使用以下步骤来运行一个Tcl文件表示helloWorld.tcl
$ wish helloWorld.tcl
按回车键,我们会看到类似以下的输出。
在Mac OS X安装
从可用有效的Tcl/Tk二进制文件列表下载最新版本的Mac OS X包。有效Tcl社区版可免费供个人使用。
运行下载的可执行文件安装Active Tcl,可以按照屏幕上的说明进行。
现在我们可以构建并通过使用cd命令切换到文件夹包含该文件,然后使用以下步骤运行Tcl文件helloWorld.tcl
$ wish helloWorld.tcl
按回车键,我们会看到一个输出,如下图所示。
从安装源文件
可以从源文件安装时的二进制包不可用的选项。所以一般最好使用Tk的二进制文件适用于Windows和Mac OS X,在UNIX的系统资源所以只有编译如下所示。
- 下载源文件。
- 现在,使用下面的命令来提取,编译和构建切换到下载的文件夹。
$ tar zxf tk8.6.1-src.tar.gz
$ cd tcl8.6.1
$ cd unix
$ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc
$ make
$ sudo make install
注:请确保更改文件名,在上面的命令1和2下载的版本。
TK特殊变量 - Tk教程
在tk中,我们将一些变量进行分类作为特殊变量,它们有一个预定义的用法/功能。特殊变量的列表如下。
特变 | 描述 |
tk_library | 用于设置标准Tk库的位置。 |
tk_patchLevel | 参照Tk解释当前补丁级别。 |
tk_strictMotif | 当非零,TK试图尽可能接近遵循Motif外观。 |
tk_version | 显示Tk的版本。 |
上述特殊变量都有各自的Tk解释特殊的含义。
使用Tk特殊变量的例子
让我们来看看特殊变量的例子。
TK版本
#!/usr/bin/wish
puts $tk_version
当运行程序,会得到一个相似的输出,如下图所示。
8.5
TK库路径
#!/usr/bin/wish
puts $tk_library
当运行程序,会得到一个相似的输出,如下图所示。
/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts
TK补丁级别
#!/usr/bin/wish
puts $tk_patchLevel
当运行程序,会得到一个相似的输出,如下图所示。
8.6.1
TK STRICTMOTIF
#!/usr/bin/wish
puts $tk_strictMotif
当运行程序,会得到一个相似的输出,如下图所示。
0
TK Widget概述 - Tk教程
一个基于Tcl的应用程序的基本组成部分被称为窗口小部件。成分有时也被称为窗口,由于在Tk的“window”和“widget”经常互换使用。 Tk是一个软件包,提供了一组图形组件的丰富来使用Tcl创建图形的应用程序。
TK提供了一系列的部件,从基本的GUI控件如按钮和菜单数据显示窗口小部件。窗口小部件是非常可配置的,因为它们的默认配置使它们易于使用。
Tk程序遵循一个部件widget的层次结构,其中任何数量的部件可以被放置在另一小窗口,并在另一小窗口的部件。在一个Tk的程序所述主窗口部件被称为根部件,并且可以通过使TkRoot类的新实例被创建。
创建一个小部件
创建插件widget语法下面给出。
type variableName arguments options
这里的类型指的是按钮,标记等小部件的类型。参数是可选的,并且基于每个widget语法所必需的。选项范围大小到每个组件的格式。
Widget 命名约定
Widget使用类似命名的包结构。Tk的根窗口被命名为用句点(.)和在窗口中的元素,例如按钮命名.myButton1。变量名称应该以小写字母,数字或标点符号(除了一个时期)。第一个字符后,其它字符可以是大写或小写字母,数字或标点符号(除了时间)。建议使用小写字母开始的标签。
颜色命名约定
颜色可以使用名称,如red, green等声明。它也可以用十六进制表示与#。十六进制数字的数目可以是3,6,9或12。
维度约定
默认单位是像素,它是用来当指定大小。其他尺寸i表示英寸,m表示毫米,c表示厘米,以及p表示点。
常用选项
有提供给所有的部件,以便许多共同的选项和它们被列于下表中。
SN | 语法 | 描述 |
1 | -background color | 用于设置小部件背景色。 |
2 | -borderwidth width | 用于绘制在3D效果边界。 |
3 | -font fontDescriptor | 用来设置部件字体。 |
4 | -foreground color | 用于设置部件的前景色。 |
5 | -height number | 用于设置部件高度。 |
6 | -highlightbackground color | 用于设置颜色矩形周围画一个小部件时,窗口小部件不具有输入焦点。 |
7 | -highlightcolor color | 用于设置颜色矩形周围画一个小部件时,窗口小部件有输入焦点。 |
8 | -padx number | 设置padx的部件。 |
9 | -pady number | 设置pady的部件。 |
10 | -relief condition | 设置这个小程序的3D浮雕。条件得到提升,凹陷,扁平,起垄,固体或凹槽。 |
11 | -text text | 设置小部件的文本。 |
12 | -textvariable varName | 变量与小部件关联。当小部件的文本改变,该变量设置控件的文本。 |
13 | -width number | 设置widget的宽度。 |
一个简单的例子选择如下所示。
#!/usr/bin/wish
grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3] -padx 100 -pady 100
当我们运行上面的程序,会得到下面的输出。
可用窗口小部件的列表如下分类。
基础widgets
SN | Widget | 描述 |
1 | Label | 窗口小部件,用于显示文本的单行。 |
2 | Button | 小部件是可以点击的,并触发一个动作。 |
3 | Entry | 窗口小部件用于接受文字输入的一行。 |
4 | Message | 小部件显示多行文本。 |
5 | Text | 小部件显示和可选编辑多行文本。 |
6 | Toplevel | 由窗口管理器提供的所有边框和装饰。 |
widgets布局
SN | Widget | 描述 |
1 | Frame | 容器部件持有其他部件。 |
2 | Place | 窗口小部件持有特定的地方的其他部件,其起源坐标和精确的尺寸。 |
3 | Pack | 简单的小工具,以将它们放置在父控件之前组织块部件。 |
4 | Grid | 窗口小部件嵌套小部件包装在不同的方向。 |
选择widgets
SN | Widget | 描述 |
1 | Radiobutton | 窗口小部件具有一组开/关按钮和标签,其中一个可被选择。 |
2 | Checkbutton | 窗口小部件具有一组开/关按钮和标签,其中许多可被选择. |
3 | Menu | 窗口小部件为菜单项充当支架。 |
4 | Listbox | 窗口小部件,显示一个或多个单元格,其中的列表可以被选择。 |
大型widgets
SN | Widget | 描述 |
1 | Dialog | 部件显示对话框。 |
2 | Spinbox | 窗口小部件允许用户选择数字。 |
3 | Combobox | 窗口小部件,它结合了可供利用的选择列表中的一个条目。 |
4 | Notebook | 标签窗口小部件,有助于几个页面之一之间切换,使用索引选项卡。 |
5 | Progressbar | 窗口小部件提供视觉反馈的一个长期操作,如文件上传进度。 |
6 | Treeview | 窗口小部件用来显示,并允许通过项目的层次结构浏览更多的树的形式。 |
7 | Scrollbar | 滚动部件没有文字或canvas小部件。 |
8 | Scale | 缩放小部件选择通过滑块的数值。 |
其它 widgets
SN | Widget | 描述 |
1 | Canvas | 绘制部件显示图形和图像.. |
我们将介绍有关各窗口小部件在下几个章节。
TK 基本Widget - Tk教程
基本部件widget是在几乎所有的Tk应用程序中提供常用的小工具。可用的基本部件的列表如下所示。
1 | 窗口小部件,用于显示文本的单行。 | |
2 | 小部件是可以点击的,并触发一个动作。 | |
3 | 窗口小部件用于接受文字输入的一行。 | |
4 | 小部件显示多行文本。 | |
5 | 小部件显示和可选编辑多行文本。 | |
6 | 窗口小部件用于创建一个帧是一个新的顶层窗口。 |
一个简单Tk的示例如下所示使用基本部件。
#!/usr/bin/wish
grid [label .myLabel -text "Label Widget" -textvariable labelText]
grid [text .myText -width 20 -height 5]
.myText insert 1.0 "Text\nWidget\n"
grid [entry .myEntry -text "Entry Widget"]
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
grid [button .myButton1 -text "Button" -command "set labelText clicked"]
当我们运行上面的程序,会得到下面的输出。
TK Widget布局 - Tk教程
布局部件被用于处理Tk应用程序布局。Frame控件是用来组其他部件和位置,包装和网格是布局管理器,完全控制添加到Windows。可用布局窗口小部件的列表,如下所示。
1 | 容器部件持有其他部件。 | |
2 | 窗口小部件持有特定的地方的其他部件,其起源坐标和精确的尺寸。 | |
3 | 简单的小工具,以将它们放置在父控件之前组织块部件。 | |
4 | 窗口小部件嵌套小部件包装在不同的方向。 |
一个简单的Tk的部件布局示例,如下所示。
#!/usr/bin/wish
frame .myFrame1 -background red -relief ridge -borderwidth 8 -padx 10 -pady 10 -height 100 -width 100
frame .myFrame2 -background blue -relief ridge -borderwidth 8 -padx 10 -pady 10 -height 100 -width 50
pack .myFrame1
pack .myFrame2
当我们运行上面的程序,会得到下面的输出。
TK选择Widget - Tk教程
选择窗口小部件用于选择在一个Tk应用程序不同的选项。可用的选择窗口小部件的列表,如下所示。
1 | 窗口小部件具有一组开/关按钮和标签,其中一个可被选择 | |
2 | 窗口小部件具有一组开/关按钮和标签,其中许多可被选择。 | |
3 | 窗口小部件为菜单项充当支架。 | |
4 | 窗口小部件,显示一个或多个单元格,其中的列表可以被选择。 |
一个简单的Tk选择部件使用的示例如下所示。
#!/usr/bin/wish
grid [frame .gender ]
grid [label .label1 -text "Male" -textvariable myLabel1 ]
grid [radiobutton .gender.maleBtn -text "Male" -variable gender -value "Male" -command "set myLabel1 Male"] -row 1 -column 2
grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female" -command "set myLabel1 Female"] -row 1 -column 3
.gender.maleBtn select
grid [label .myLabel2 -text "Range 1 not selected" -textvariable myLabelValue2 ]
grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } {
set myLabelValue2 {Range 1 selected}
} else {
set myLabelValue2 {Range 1 not selected}
} }]
proc setLabel {text} {
.label configure -text $text
}
当我们运行上面的程序,会得到下面的输出。
Tk Canvas Widget - Tk教程
Canvas 用于提供画图区。Canvas 组件的语法如下所示。
canvas canvasName options
选项
可用于canvas widget的选项列于下表中。
SN | 语法 | 描述 |
1 | -background color | 用于设置小部件背景色。 |
2 | -closeenough distance | 设置鼠标光标移动到一个可显示项目接近程度。默认值是1.0像素。该值可以是一个分数,并必须为正。 |
3 | -scrollregion boundingBox | 所述边界框为这个画布canvas的总面积。 |
4 | -height number | 用于设置部件widget的高度。 |
5 | -width number | 设置widget的宽度。 |
6 | -xscrollincrement size | 用于滚动请求水平滚动的数量值。 |
7 | -yscrollincrement size | 垂直滚动时,滚动请求数量值。 |
一个简单的例子canvas widget如下所示。
#!/usr/bin/wish
canvas .myCanvas -background red -width 100 -height 100
pack .myCanvas
当我们运行上面的程序,会得到下面的输出。
Widget小工具在canvas上绘图
可用小部件在画布canvas上绘制列表如下。
SN | Widget | 描述 |
1 | 绘制一条线。 | |
2 | 绘制弧形。 | |
3 | 绘制一个矩形。 | |
4 | 绘制一个椭圆。 | |
5 | 绘制多边形。 | |
6 | 绘制文本。 | |
7 | 绘制一个位图。 | |
8 | 绘制图像。 |
使用不同的canvas widgets 的一个例子如下所示。
#!/usr/bin/wish
canvas .myCanvas -background red -width 200 -height 200
pack .myCanvas
.myCanvas create arc 10 10 50 50 -fill yellow
.myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true -splinesteps 2
.myCanvas create oval 50 50 100 80 -fill yellow
.myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green
.myCanvas create rectangle 150 150 170 170 -fill yellow
.myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold}
.myCanvas create bitmap 180 50 -bitmap info
当我们运行上面的程序,会得到下面的输出。
TK 大型Widget - Tk教程
大型部件,其中包括许多复杂的部件是经常需要在一些大型Tk的应用。可用大型部件的列表,如下所示。
SN | Widget | 描述 |
1 | 小部件显示对话框。 | |
2 | 小工具,允许用户选择数字。 | |
3 | 窗口小部件,它结合了可供利用的选择列表中的一个条目。 | |
4 | 标签窗口小部件,有助于几个页面之一之间切换,使用索引选项卡。 | |
5 | 窗口小部件提供视觉反馈的一个长操作,如文件上传进度。 | |
6 | 窗口小部件来显示,并允许通过项目的层次结构浏览更多的树的形式。 | |
7 | 滚动部件不带文字或canvas小部件。 | |
8 | 缩放小部件选择通过滑块的数值。 |
一个简单的Tk的使用一些大型部件的示例如下所示。
#!/usr/bin/wish
ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator"
.tree heading Creator -text "Creator" -anchor center
.tree heading Year -text "Year" -anchor center
pack .tree
.tree insert {} end -id Languages -text "Languages"
.tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"]
proc scaleMe {mywidget scaleValue} {
$mywidget configure -length $scaleValue
}
pack [scale .s2 -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5 -font {Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal -variable a -command "scaleMe .s2" ]
pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90]
pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a -maximum 75 -value 20]
当我们运行上面的程序,会得到下面的输出。
TK图片 - Tk教程
图像小部件,用于创建和处理图像。创建图像的语法如下。
image create type name options
另外,在上述的语法类型是照片、位图或名称是图像标识符。
选项
可用于图像的选项创建列于下表中。
SN | 语法 | 描述 |
1 | -file fileName | 图像文件名的名称。 |
2 | -height number | 用于设置部件widget的高度。 |
3 | -width number | 设置widget的宽度。 |
4 | -data string | 图像中基本64编码字符串。 |
一个简单图像小部件的例子如下所示。
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/680049.png" -width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
当我们运行上面的程序,会得到下面的输出。
可用函数用于图像列于下表中。
SN | 语法 | 描述 |
1 | image delete imageName | 删除从存储器和相关的小窗口在视觉上的图像。 |
2 | image height imageName | 返回高度的图像。 |
3 | image width imageName | 返回图像的宽度。 |
4 | image type imageName | 返回图像的类型。 |
5 | image names | 返回存在存储器中的图像列表。 |
一个简单的例子,使用上面图像小部件的命令如下所示。
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/images/680049.png" -width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
puts [image height imgobj]
puts [image width imgobj]
puts [image type imgobj]
puts [image names]
image delete imgobj
图像将视觉和记忆,一旦“image delete imgobj”命令执行删除。在控制台,输出会像下面。
400
400
photo
imgobj ::tk::icons::information ::tk::icons::error ::tk::icons::warning ::tk::icons::question
TK事件 - Tk教程
事件是最简单的形式与命令的交互处理过程。一个简单的例子,事件处理-按钮事件,如下图所示。
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
当我们运行上面的程序,会得到下面的输出。
一个简单的程序,以显示延迟的文字动画事件如下所示。
#!/usr/bin/wish
proc delay {} {
for {set j 0} {$j < 100000} {incr j} {
}
}
label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} {
.myLabel configure -text [string range $str 0 $i]
update
delay
}
当我们运行程序,会得到动画如下面的输出。
延后事件
延后事件的语法如下所示。
after milliseconds number command
一个简单的程序,以显示如下图所示延迟事件之后。
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
当我们运行程序,将在一秒钟后得到以下输出。
可以在使用后,取消命令,如下图所示取消的事件。
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
after cancel addText
事件绑定
事件绑定的语法如下所示。
bind arguments
键盘事件的例子
#!/usr/bin/wish
bind . {puts "Key Pressed: %K "}
当我们运行程序,并按下一个字母X,会得到下面的输出。
Key Pressed: X
鼠标事件的例子
#!/usr/bin/wish
bind . {puts "Button %b Pressed : %x %y "}
当我们运行程序,并按下鼠标左键,会得到类似以下的输出。
Button 1 Pressed : 89 90
具有按钮事件例如链接
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
bind . ".myButton1 invoke"
当我们运行程序,然后按回车,会得到下面的输出。
Event triggered
TK窗口管理器 - Tk教程
窗口管理器是用来处理顶层窗口。它有助于在控制大小,位置和窗口的其他属性。在传统知识。用于指主窗口。窗口命令的语法如下所示。
wm option window arguments
可用于Tk wm命令选项的列表如下表所示。
SN | 语法 | 描述 |
1 | aspect windowName a b c d | 尽量保持width/height的比率是a/b 和 c/d之间。 |
2 | geometry windowName geometryParams | 用于设置几何窗口。 |
3 | grid windowName w h dx dy | 设置网格的大小。 |
4 | group windowName leaderName | leaderName给出了一组相关的窗口 |
5 | deiconify windowName | 使画面正常,如果是最小化。 |
6 | iconify windowName | 最小化窗口。 |
7 | state windowName | 返回窗口的当前状态。 |
8 | withdraw windowName | 将取消该窗口,并在内存中删除其详细信息。 |
9 | iconbitmap windowName image | 设置或返回图标位图。 |
10 | iconPhoto windowName image | 设置或返回图标照片。 |
11 | command windowName commandString | 记录WM_COMMAND属性启动命令。 |
12 | protocol windowName arguments | 寄存器命令来处理协议请求名称,这可以是WM_DELETE_WINDOW, WM_SAVE_YOURSELF, WM_TAKE_FOCUS. Eg: wm协议。 WM_DELETE_WINDOW退出 |
13 | minsize windowName size | 确定最小窗口尺寸。 |
14 | maxsize windowName size | 确定最大窗口大小。 |
15 | title windowName titleText | 确定用于窗口的标题。 |
16 | attributes subOptions | 很多可用的如,字母,全屏等属性。 |
上述的一些命令被用在下面的例子。
#!/usr/bin/wish
wm maxsize . 800 800
wm minsize . 300 300
wm title . "Hello"
wm attributes . -alpha ".90"
wm geometry . 300x200+100+100
当我们运行上面的程序,会得到下面的输出。
正如所看到alpha是可用的属性之一。常用子命令的列表在下面列出。
SN | 语法 | 描述 |
1 | -alpha number | 设置字母窗口。 |
2 | -fullscreen number | 数字可以是:0-正常屏幕或1-全屏。 |
3 | -topmost number | 设置或返回窗口topmost.Value是否为0或1。 |
创建窗口
我们可以使用顶层命令用来创建一个窗口和一个示例如下所示。
#!/usr/bin/wish
toplevel .t
当我们运行上面的程序,会得到下面的输出。
销毁窗口
我们可以用destroy命令销毁的窗口和一个示例如下所示。
#!/usr/bin/wish
destroy .t
上面的命令会销毁名为.t的窗口。
TK几何图形管理器 - Tk教程
几何图形管理器用于管理窗口和其他框架的几何形状。我们可以用它来处理的窗口和框架的位置和大小。布局部件被用于此目的。
定位和尺寸
窗口的定位和大小的语法如下所示。
wm geometry . wxh+/-x+/-y
在这里,w特是指宽度和h指高度。其次是一个“+”或“ - ”符号与下一个编号参照在屏幕上的x位置。同样地,下面的“+”或“ - ”符号及使用的数字是指在屏幕上的y位置
一个简单的例子显示如下上述。
#!/usr/bin/wish
wm geometry . 300x200+100+100
当我们运行上面的程序,会得到下面的输出。
网格几何图形
网格几何的语法如下所示。
grid gridName -column number -row number -columnspan number -rowspan number
column, row, columnspan, rowspan有助于提供网格几何形状。
一个简单的例子显示如下上述。
#!/usr/bin/wish
frame .myFrame1 -background red -height 100 -width 100
frame .myFrame2 -background blue -height 100 -width 50
grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w
grid .myFrame2 -column 10 -row 2
当我们运行上面的程序,会得到下面的输出。
</center>
</center>




