环境及版本说明:

OSX10.9

tclsh -> tclsh8.5

wish -> wish8.5

查看本机运行环境:

 which wish;
2 /usr/bin/wish
 which tclsh;
/usr/bin/tclsh

Demo功能说明:

用户登录窗口,输入用户名,密码.与文件中存储内容校验,如果相等,则提示"登录成功",否则提示"是否需要新建用户",点击"否"退出messageBox,点击"是"新建用户.内容追加写入文件.

 #!/usr/bin/wish -f
#
# this is test login, Tk-style set filename "usrfile.pwd"; proc splitf { str index } {
set y [ split $str | ];
list $y;
set w [ lindex $y $index ];
return $w;
} proc checkinfo {name pwd} {
global filename;
set iflag ;
set isUser ; if { $name eq "" || $pwd eq "" } {
return ;
} set fileId [ open $filename r ];
while { [ gets $fileId line ] >= } {
set nameInfile [ splitf $line ];
set cmp [ string compare $name $nameInfile ]; if { $cmp != } {
set isUser [ expr $isUser + ];
} elseif { $cmp == } {
set pwdInfile [ splitf $line ];
set cmp [ string compare $pwd $pwdInfile ];
if { $cmp == } {
close $fileId;
return ; #login successful
} else {
close $fileId;
return ; #err user pwd
}
}
set iflag [ expr $iflag + ];
}
close $fileId; if { $iflag == } {
return ; #file is null,creat user;
}
if { $iflag == $isUser } {
return ; #creat user
}
} proc process { uname pwd } {
global filename;
set returnCheck [ checkinfo $uname $pwd ];
switch -- $returnCheck {
{ tk_messageBox -type ok -message "you are login successful" }
{ set answer [ tk_messageBox -type yesno -icon question \
-message "you need creat a user" ] ;
switch -- $answer {
no { }
yes { puts stdout [ createusr $uname $pwd ] }
}
}
//003 { tk_messageBox -type ok -icon warning -message "$filename file is null" }
{ tk_messageBox -type ok -icon error -message "input err of user pwd" }
{ tk_messageBox -type ok -icon info -message "user and pwd is not null" }
default { tk_messageBox -type ok -icon error -message "system err" }
}
} proc createusr { uname pwd } {
global filename;
set fileId [ open $filename a ];
puts $fileId "$uname|$pwd" ;
close $fileId;
return ;
}
wm title . LOGIN
wm maxsize .
wm minsize .
wm resizable .
wm geometry . 500x300++ label .ulname -text "userName" entry .tuname -textvariable name label .ulpwd -text "userPwd" entry .tupwd -textvariable pwd button .bOK -text OK \
-command { puts stdout [ process $name $pwd] } button .bExit -text Exit \
-command {exit} place .ulname -x -y
place .tuname -x -y
place .ulpwd -x -y
place .tupwd -x -y place .bOK -x -y
place .bExit -x -y
 wish tk.tcl

配置文件格式:

 cat usrfile.pwd
2 userTmp|abc123

此Demo涉及控件,语法.足够日常使用.望对新学者有点帮助.

特别需要注意:

1- 所有的关键字与{ 等之间一定要有空格,否则无法解析.

错误: proc sum{arg1 arg2}{
正确: proc sum { arg1 arg2 } {

2- proc if switch等需要用{}包含的body 左括号一定要写到 if {} { 与关键字同行

 proc sum { arg1 arg2 }

 {

   ....

 }

以上代码将提示:

Error in startup script: wrong # args: should be "proc name args body"

while executing

"proc sum {arg1 arg2} "

(file "a.tcl" line 3)

需要修改为:

 proc sum { arg1 arg2 } {

   ....

 }

学习网站:

http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm

http://www2.tcl.tk/1062

http://blog.csdn.net/dulixin/article/category/366323

read-only access to git repository:

git clone https://github.com/galoishelley/tcltk

tcl/tk demo的更多相关文章

  1. Tcl Tk Introduction

    Tcl Tk Introduction eryar@163.com 摘要Abstract:Tcl/Tck脚本可以很容易实现用户自定义的命令,方便的创建图形化的用户界面GUI,所以Tcl和Tk的应用领域 ...

  2. python INFO: Can't locate Tcl/Tk libs and/or headers

    安装opencv的时候遇到这个错误: python INFO: Can't locate Tcl/Tk libs and/or headers 参考如下文章解决这个问题: http://www.ver ...

  3. freewrap——将tcl/tk脚本转变为可执行文件

     FreeWrap可以把TCL/TK的脚本和二进制文件打包成应用程序,FreeWrap将所有的文件组合成一个单独的可执行文件.     FreeWrap的原理是把脚本和tcl/tk解释器和库文件都打包 ...

  4. 用Tcl/Tk脚本计算圆周率

      读了阮一峰的蒙特卡罗方法入门,用概率统计的方式求解棘手的数学问题还挺有意思的,尤其是利用正方形和它的内切圆之间的面积关系来建模求解圆周率的方法精巧又简单,比投针实验好理解也好实现多了.建模可不是M ...

  5. Tcl/tk缩放Truetype字体时的精度问题

    最近有国内新客户抱怨我们产品显示的原理图太不专业了,在原理图上使用宋体GB2312设计好中文图表,经过几次缩放时,表格内的文字居然会跑到表格外边,更要命的是打印出来的文档也存在同样的问题. 我研究了一 ...

  6. linux下ruby使用tcl/tk编程环境设置

    正常情况下最新的ruby都是不带tcl/tk选项编译的,所以我们在运行tcl/tk代码时都会发生找不到tk库的错误.解决办法很简单只要以tcl/tk选项编译ruby即可. 这里以ubuntu 15.0 ...

  7. Mac OS X下让ruby支持tcl/tk

    我记得在老早在OS X10.8下使用ruby1.9.x的时候只要到下载安装ActiveTcl8.5,没怎么配置就运行tk好好的.但是近日想重新执行下tk代码,发现在require 'tk'的时候就报错 ...

  8. pgtksh -- PostgreSQL Tcl/Tk shell 客户端

    SYNOPSIS pgtksh [filename [argument...]] DESCRIPTION 描述 pgtksh 是一个带有 PostgreSQL 数据库访问函数扩展的 Tcl/Tk sh ...

  9. tcl/tk实例详解——glob使用例解

    glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...

随机推荐

  1. Object-c学习之路十(NSNumber&NSValue)

    // // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildc ...

  2. Unity3d Web Player 的server端联网配置

    新游戏出了第一个能跑完流程的版本,不得不佩服Unity3D强大的功力,PC.MAC OS.Linux.IOS.Android.web player,前天刚发布的unity3d 4.2版本还支持WIND ...

  3. CSS3动画之透视

    若在x,y轴rotate90度,其实是线,不显示,按近大远小的透视关系可用 perspective:数值 开启透视: 默认以中间线为旋转基线,可以用transform-origin来设置旋转基线 在z ...

  4. STL中vector,Map,Set的实现原理

    vector的数据安排以及操作方式,与array非常类似,两者唯一的区别是空间运用的灵活性,array是静态空间,一旦配置了就不能改变,如果你想要大一点的空间,就必须首先配置一块新空间,然后将原来的元 ...

  5. ASP.NET MVC 4.0 学习1-C#基础语法

    1,方法多載,相同的方法名稱,不同的參數類型.數量 class Program { static void Main(string[] args) { Program newObject = new ...

  6. winform 窗口点击窗体任意位置移动窗体

    private bool _isDown; private Point _mousePoint; private void Users_MouseDown(object sender, MouseEv ...

  7. mysql 创建外键引用时眼瞎了,然而mysql 报的错也是认人摸不着头脑

    问题描述: 在创建外键约束时mysql 报 Create table 'tempdb/student' with foreign key constraint failed. There is no ...

  8. Node.js how to respond to an upgrade request?

    You just need to call socket.write with the appropriate HTTP syntax as plain text along these lines ...

  9. Myeclipse6.5配置反编译插件

    PS:jad.exe位置与Myeclipse6.5安装目录平行

  10. MySQL库目录下db.opt文件的作用

    细心的朋友可能会发现有时候在某些库目录下有个 db.opt 文件,那这个文件是干什么用的呢?如果你用vi等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的.也就是说如果 ...