当前位置:服务支持 >  软件文章 >  tcl/tk学习笔记(2)|一个简单计算器的GUI教给你的不只是计算

tcl/tk学习笔记(2)|一个简单计算器的GUI教给你的不只是计算

阅读数 5
点赞 0
article_banner

你会用tcl/tk制作计算器吗?戳这里,全网独家分享,你获得不只是计算器的制作!

在Hypermesh二次开发中GUI是非常重要的一环。下面我将试图制作一个简单的四则运算计算器,虽然麻雀虽小,但五脏俱全,此计算器包含了radiobutton、button、entry、label、labelframe等组件的综合应用。

1问题描述

基于tcl/tk语言,制作一个四则运算计算器,如下图所示。

GUI图示

2设计思路

1.在计算类型中,通过单选按钮选择求解类型;

2.在计算模块中,输入运算变量,点击计算按钮完成计算;

3.点击退出按钮,关闭系统界面。

 

3制作过程

在第一个labelframe里设置四个单选按钮(Add、Subtract、Multiply、Divide)完成求解类型的选择。

labelframe设置方法:-fg选项可设置字体的显示颜色。

radiobutton按钮设置:点击radiobutton将-value的值赋给-variable下的变量,例如点击rdb1按钮,则tag=“+”,后续便可通过$tag调用符号“+”。

在第二个labelframe里完成计算变量的输入和求解。设置两个动态文本框entry以便输入计算变量。运算符号(+-*/),等号用静态文本框label来显示。运算符号的显示可通过label组件下的-textvariable变量与radiobutton下的-variable变量名一致来完成关联。输入计算变量后,通过点击计算按钮完成计算。

button按钮设置:-bg选项将按钮设置成了灰色。

4button按钮的一个bug处理方法

Tcl/tk创建按钮后,我遇到了一个小问题,鼠标并未主动点击按钮,系统却执行了按钮的-command命令。例如:

移动鼠标在按钮以外的区域,界面也自动退出。

我的解决方法:button中不要涉及-command命令,而是通过bind的ButtonPress选项来执行button中的-command命令:

若button的-command执行的是一个表达式,例如通过-command中的脚本将表达式结果写入label中-textvariable sum中,为了实现此功能,则bind中的脚本不要再添加 “$btn1 config -command {表达式}”,否则也会发生未点击按钮,系统就执行了命令的现象。

正确写法:

5脚本代码

下面献上源码,以供大家食用。

#-padx 142 

set f2 [labelframe $w.lf2 -text “Calculation” -fg blue -bd 2 -padx 60 ] grid $f1 -row 0 -column 0 -sticky nsew 

grid $f2 -row 1 -column 0 -sticky nsew 

set rdb1 [radiobutton $f1.rdb1 -text Add -variable tag -value “+” -anchor w];#-value “+” 

set rdb2 [radiobutton $f1.rdb2 -text Subtract -variable tag -value “-” -anchor w] 

set rdb3 [radiobutton $f1.rdb3 -text Multiply -variable tag -value “*” -anchor w] 

set rdb4 [radiobutton $f1.rdb4 -text Divide -variable tag -value “/” -anchor w] 

grid $rdb1 -row 0 -column 0 -sticky w 

grid $rdb2 -row 0 -column 1 -sticky w 

grid $rdb3 -row 0 -column 2 -sticky w 

grid $rdb4 -row 0 -column 3 -sticky w 

set var1 12 

set var2 34 

set ent1 [entry $f2.ent1 -width 10 -textvariable var1] 

set ent2 [entry $f2.ent2 -width 10 -textvariable var2] 

set lb1 [label $f2.lb1 -width 2 -text “+” -textvariable Label -font 10] set lb2 [label $f2.lb2 -width 2 -text “=” ] 

set lb3 [label $f2.lb3 -width 20 -textvariable sum] 

set btn1 [button $f2.btn1 -text “Calculate” -width 10 -bg gray ] 

set btn2 [button $f2.btn2 -text “Exit” -width 10 -bg gray ] 

grid $lb1 -row 0 -column 1 -padx 40 -sticky w 

grid $ent1 -row 0 -column 0 -sticky nsew 

grid $ent2 -row 0 -column 2 -sticky w 

grid $lb2 -row 0 -column 3 -padx 1 -sticky w 

grid $btn1 -row 1 -column 1 -padx 1 -pady 5 -sticky nsew 

grid $lb3 -row 0 -column 4 -padx 1 -sticky w 

grid $btn2 -row 1 -column 2 -padx 1 -pady 5 -sticky w 

#bind btn1 to excute button 1 command 

bind $btn1 {set sum [expr $var1 $tag $var2]} 

bind $btn2 <ButtonPress> {btn2 config -command {exit}}; 

bind $rdb1 {set Label $tag} 

bind $rdb2 {set Label $tag} 

bind $rdb3 {set Label $tag} 

bind $rdb4 {set Label $tag}

运行上述代码,便可获得如下界面:

计算界面GUI图

好了,一个实现四则运算的计算器制作完了,若读到了这里,想必你一定是被知识冲昏了头脑,那就请续上点赞、转发、在看之后再走吧!


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空