本文共 2181 字,大约阅读时间需要 7 分钟。
首先给出完整代码:
from tkinter import *tk=Tk() #主窗口frame=Frame( tk ) #窗体·布局frame.pack() # 默认side=TOP 置于最上方#创建控件label=Label(frame)entry=Entry(frame)button=Button( frame, text="equals to", command=calc )#控件布局label.pack( side=LEFT ) # 置于左侧entry.pack() # 默认side=TOP 置于最上方button.pack( side=RIGHT ) # 置于右侧#公式·表达式def calc(): result= "=" + str( eval( expression.get() ) ) label.config( text=result )#表达式expression= StringVar()entry[ "textvariable" ]= expression #表达式由entry输入entry.focus() #输入光标闪烁frame.mainloop() #运行
一步步对代码进行思路分析和解释。写代码第一要紧是要知道目的是什么,是搭建一个计算器然后运行它;其次才是,如何实现输入、计算和输出。
利用tkinter库搭建窗口和窗体,利用Label标签、Entry文本框、Button按键,这三个控件,分别完成输出、输入和公式运行。
#屏显式计算器编写思路:#载入#主窗口#窗体·布局···#运行#将下面内容插入···中#控件·布局#公式·表达式#表达式
#根据上面的思路写出代码如下:from tkinter import * #载入tk=Tk() #主窗口frame=Frame( tk ) #窗体·布局frame.pack() # pack是对控件的布局 # 默认pack(side=TOP) 置于最上方···frame.mainloop() #运行#将下面插入···中#控件·布局label=Label(frame)entry=Entry(frame)button=Button(frame, text="equals to", command=calc) #calc是接下来要定义的公式label.pack( side=LEFT )entry.pack()button.pack( side=RIGHT )#公式·表达式def calc(): result= "=" + str( eval( expression.get() ) ) label.config( text=result ) #结果显示在label上#表达式expression= StringVar()entry[ "textvariable" ]= expression #表达式由entry输入entry.focus() #输入光标闪烁
#公式解释def calc(): result= "=" + str( eval( expression.get() ) ) # "=" + 获取get→表达式expression→计算eval→转为字符串str label.config( text=result ) #结果显示在label上#公式结果展示在label上#公式输入显示在entry上(见下方表达式解释)#公式应用在button上#表达式解释expression= StringVar() #输入字符串entry[ "textvariable" ]= expression #转化为entry控件的文字变量entry.focus() #entry控件输入光标闪烁
#公式结果展示在label上
#公式输入显示在entry上 #公式应用在button上补充:
entry=Entry(frame)expression=StringVar()entry["textvariable"]=expression#textvariable是Entry控件的参数,表示文本框的值,是一个StringVar()对象,由此可改写为expression=StringVar()entry=Entry( frame, textvariable=expression )
参考文献:
常见错误:
不要把#放在右括号前面
def 公式顺序没关系,写在前后都可以;
def fun(): 冒号不能少
每段之间空格换行检查好
button=Button( frame, text="equals to", command=calc ) #command=函数名不加括号
进一步调试发现,如果使用lambda匿名函数
command=lambda:gongshi() 必须要有括号,否则表达式计算不会出结果;没有lambda则command=gongshi不能有括号
致谢:
感谢上帝的恩典 ,祂的应许是真实的,凡信靠祂的人,必在基督里得着一切幸福和盼望。我们所盼望的乃是祂的恩典,和祂的所有应许。感谢神,因祂有说不尽的恩赐。
如果有什么地方没检查出错误,请指正;
如果有可以优化的地方,欢迎多多指教。谢谢你们。
转载地址:http://tfjaz.baihongyu.com/