环境及版本说明:

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. 使导出excle文档实现ALT+Enter的效果()

    JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没有其他方法可以实现. 20 JAVA中输入什么转义字符,使导出excle文档实现ALT+Enter的效果?或者有没 ...

  2. centos源码安装git

    因为Centos上yum安装的话可能版本比较低,使用中会有一些难以预料的问题出现. 从源代码编译安装方法: #Centos执行: yum install curl-devel expat-devel ...

  3. win7 tomcat

    前提需要有java环境 cmd 1- 下载tomcat http://tomcat.apache.org/ download Tomcat7.0 2- 配置环境变量 CATALINA_HOME C:\ ...

  4. ZendFramework2 源码分析 index.php

    <?php /** * This makes our life easier when dealing with paths. Everything is relative * to the a ...

  5. Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容

    1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第二部分,第一 ...

  6. Loadrunner11 录制手机App脚本多种方法介绍

    总体来说,通过LR录制手机脚本的方式有三种:1)通过代理方式录制,保证手机电脑在同一个网段:2)通过抓包录制,在手机上安装Mobile Recorder:3)通过安卓模拟器录制,本地安装Android ...

  7. c# List集合排序

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  8. Android 打开URL

    打开链接 Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")); it.set ...

  9. jQuery UI 之 EasyUI 快速入门

    jQuery EasyUI 基础 转载自(http://www.shouce.ren/api/view/a/3350) jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面 ...

  10. initial pointer [expert c]

    initial differece between pointer and array Both arrays and pointers can be initialized with a liter ...