Python制作输入式计算器


首先给出完整代码:

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 )

参考文献:

Tkinter Entry控件_微学苑
http://www.weixueyuan.net/a/594.html

常见错误:

不要把#放在右括号前面

def 公式顺序没关系,写在前后都可以;

def fun(): 冒号不能少

每段之间空格换行检查好

button=Button( frame, text="equals to", command=calc ) #command=函数名不加括号

进一步调试发现,如果使用lambda匿名函数

command=lambda:gongshi() 必须要有括号,否则表达式计算不会出结果;没有lambda则command=gongshi不能有括号

致谢:

感谢上帝的恩典 ,祂的应许是真实的,凡信靠祂的人,必在基督里得着一切幸福和盼望。我们所盼望的乃是祂的恩典,和祂的所有应许。感谢神,因祂有说不尽的恩赐。

如果有什么地方没检查出错误,请指正;

如果有可以优化的地方,欢迎多多指教。谢谢你们。

你可能感兴趣的:(R语言/Python画图,python,tkinter,算法)