Tk特殊变量
Sr.No. | 特殊变量&说明 |
---|---|
1 | tk_library 用于设置标准Tk库的位置. |
2 | tk_patchLevel 指当前的补丁Tk解释器的级别. |
3 | tk_strictMotif 当非零时,Tk会尽可能地坚持Motif的外观. |
4 | tk_version 显示Tk版本. |
示例:
puts $tk_version ;#输出Tk版本
=>8.5
puts $tk_library ;#输出标准Tk库路径
=>/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts
puts $tk_patchLevel ;# 输出当前补丁Tk解释器的级别
=>8.6.1
puts $tk_strictMotif ;#当非零时,Tk尽可能的坚持Motifi的外观
=>0
Tk - Widgets Overview
创建Tk窗口小部件的语法:type variableName arguments options
在Tk中,根窗口以句号(.)和窗口的元素名命名:例如.label
常见参数/选项
Sr.No. | 语法&说明 |
---|---|
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 与窗口小部件关联的变量.当widget的文本发生变化时,该变量设置为widget的文本. |
13 | -width number 设置小部件的宽度. |
基本小部件:
Sr.No. | Widget&说明 |
---|---|
1 | Label 用于显示单行文字的小工具. |
2 | Button 可点击的小工具并触发行动. |
3 | Entry 用于接受单行文本作为输入的小部件. |
4 | Message 用于显示多行文本的小部件. |
5 | Text 用于显示和选择编辑多行文字的小工具. |
6 | Toplevel 窗口管理器提供所有边框和装饰的窗口. |
#label:用于显示单行文本的小部件 显示文本 label Widdget 变量labeltext
grid [label .myLabel -text "Label Widget" -textvariable labelText]
#test 用于显示多行文本的小部件 设置小部件的宽高
grid [text .myText -width 20 -height 5]
#text小部件的内容
.myText insert 1.0 "Text\nWidget\n"
#entry 小部件用于接收单行文本作为输入
grid [entry .myEntry -text "Entry Widget"]
#message:用于显示多行文本的小部件;背景色、字体色、\n代表换行
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
#button :可点击的小工具并触发行动
grid [button .myButton1 -text "Button" -command "set labelText clicked"]
布局小部件:
Sr.No. | Widget&说明 |
---|---|
1 | Frame 用于容纳其他小部件的容器小部件. |
2 | Place 小工具在特定位置保存其他小部件坐标的原点和确切大小. |
3 | Pack 在将小部件放入父窗口小部件之前,用于组织小部件的简单窗口小部件. |
4 | Grid 嵌套小部件的小工具包装在不同的方向. |
#用于容纳其它小部件的容器小部件,背景色、relief代表不同浮雕框架:raised、sunken、flat、#groove、或者ridge,设置小部件的 X y位置 以及小部件的宽度高度。
frame .myFrame1 -background red -relief ridge -borderwidth 15 -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:再将小部件放入父窗小部件之前,用于组织小部件的简单窗口小部件。
pack .myFrame1
pack .myFrame2
选择小部件:
Sr.No. | 小工具&说明 |
---|---|
1 | Radiobutton 具有一组开/关按钮和标签的小工具,其中一个可以被选中. |
2 | Checkbutton 具有一组开/关按钮和标签的小工具,其中许多可以被选中.. |
3 | Menu 作为持有人的小工具对于菜单项. |
4 | Listbox 显示单元格列表的小组件,可以选择其中的一个或多个. |
#创建用于容纳其他小部件的容器小部件.gender
grid [frame .gender ]
#常见用于显示单行文字小工具,显示“Male” 变量名“没有label1”
grid [label .label1 -text "Male" -textvariable myLabel1 ]
#radiobutton:具有一组开/关按钮和标签的小工具,放在.gender容器中,其中一个可以被选中
#显示文本“Male”、命令:把Male 显示到label1上
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} {
.label1 configure -text $text
}
Mega Widgets:
Sr.No. | Widget&说明 |
---|---|
1 | Dialog 用于显示对话框的小工具. |
2 | Spinbox 允许用户选择数字的小工具. |
3 | Combobox 将条目与可供选择的列表组合使用的小工具. |
4 | Notebook 选项卡式窗口小部件,有助于使用索引选项卡在多个页面之一之间切换. |
5 | Progressbar 为长时间操作的进度提供视觉反馈的小工具喜欢文件上传. |
6 | Treeview 显示小部件并允许浏览更多形式的项目层次结构树. |
7 | Scrollbar 滚动小部件而不使用文本或画布小部件. |
8 | Scale 比例小部件通过滑块选择数值. |
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]
其他小部件:
Sr.No. | 小工具&说明 |
---|---|
1 | Canvas:画布小部件 用于显示图形和图像的绘图小部件.. |
画布小部件的可用选项:
Sr.No. | 语法&说明 |
---|---|
1 | - background color 用于设置小部件的背景颜色. |
2 | -closeenough distance 设定贴近度鼠标光标到可显示的项目.默认值为1.0像素.这个值可能是一个分数,必须是正数. |
3 | -scrollregion boundingBox 此画布总面积的边界框. |
4 | -height number 用于设置小部件的高度. |
5 | -width number 设置小部件的宽度. |
6 | -xscrollincrement size 请求滚动时水平滚动的数量. |
7 | -yscrollincrement size 请求滚动时垂直滚动的数量. |
画布小部件示例:
canvas .myCanvas -background red -width 100 -height 100
pack .myCanvas
在画布中绘制的可用小部件:
Sr.No. | Widget&说明 |
---|---|
1 | Line 画一条线. |
2 | Arc 绘制弧线. |
3 | Rectangle 绘制一个矩形. |
4 | Oval 画一个椭圆形. |
5 | Polygon 绘制多边形. |
6 | Text 绘制文本. |
7 | Bitmap 绘制位图. |
8 | Image 绘制图像. |
#canvas:画布小部件
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-字体
Sr.No. | 语法&安培;说明 |
---|---|
1 | -family familyName 字体系列的名称. |
2 | -size number 字体大小. |
3 | -weight level 字体的重量 |
创建字体的语法:font create fontName options;
font create myFont -family Helvetica -size 18 -weight bold
pack [label .myLabel -font myFont -text "Hello World"]
获得所有可用字体:
puts [font families]
Tk-图像
创建图像语法:imge create type name options
Sr.No. | 语法&说明 |
---|---|
1 | -file fileName 图像文件名的名称. |
2 | -height number 用于设置小部件的高度. |
3 | -width number 设置小部件的宽度. |
4 | -data string 基础64编码字符串中的图像. |
Tk-活动
最简单形式的事件是在命令的帮助下处理的.事件处理的一个简单示例是使用按钮进行事件处理,并显示在下面和下面;
#定义一个过程
proc myEvent { } {
puts "Event triggeregd"
}
#定义按键,并在按下时触发proc myEvent
pack [button .mybutton1 -text "Button1" -command myEvent]
显示延迟文本动画事件的简单程序:
#定义一个延时过程
proc delay {} {
for {set j 0} {$j < 10000000} {incr j} {}
}
#label 显示
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
}
延迟后显示
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
#更详细活动事件见Tk - 活动 在线实例教程 - IT屋 (it1352.com) 包括:事件绑定、键盘事件示例、鼠标事件示例、将事件与按钮示例连接。