用python写简易计算器_Python语言采用Tkinter编写简单GUI计算器

欢迎,来自IP地址为:111.178.86.187 的朋友

xpython-gui-tkintert-logo.jpg.pagespeed.ic.UXhvJNmtxC.webp

Python语言提供了众多开发GUI(Graphical User Interface图形用户界面)应用的选择,但是Tkinter却是应用最为广泛的一种。其根本原因在于Tkinter是跨平台的,即在windows系统和Linux系统都可以正常使用。本教程将采用Tkinter编写简单GUI计算器Python程序。

什么是Tkinter

Tkinter(TK interface)模块是一个标准TK GUI工具集Python接口

TK和TKinter在大多数类Unix和Windows平台都可以使用

如果在类Unix平台上使用TKinter,则需要安装这个模块;而在Windows平台,TKinter和Python同时安装

Python计算器程序必备条件

为了开发Python GUI计算器程序,需要系统具备以下两个模块:

TKinter

Lambda

GUI计算器的外观

上图就是程序的基本外观,看起来是不是很酷呢。这个计算器不仅可以看,并且提供了简单的四则运算功能。

现在就开始使用Python来编写这个计算器程序。程序大致包含以下四个部分:

导入TKinter模块

创建主界面(以Windwos平台为例,创建用户窗口)

为主界面添加功能按键

为每个功能按键添加事件触发器侦听并响应事件

创建主界面

首先,需要创建程序的主窗体界面,编写代码如下:

from tkinter import *

# Creating frame for calculator

def iCalc(source, side):

storeObj = Frame(source, borderwidth=4, bd=4, bg="powder blue")

storeObj.pack(side=side, expand =YES, fill =BOTH)

return storeObj

# Creating Button

def button(source, side, text, command=None):

storeObj = Button(source, text=text, command=command)

storeObj.pack(side=side, expand = YES, fill=BOTH)

return storeObj

class app(Frame):

def __init__(self):

Frame.__init__(self)

self.option_add('*Font', 'arial 20 bold')

self.pack(expand = YES, fill =BOTH)

self.master.title('Calculator')

# Start the GUI

if __name__=='__main__':

app().mainloop()

试着运行一下程序,如果出现如下界面,则表示计算器的界面框架可以正常运行了:

主界面完成后,就可以继续进行下一步步骤了。

添加功能按键

添加显示功能部件

为了让计算器可以显示输入内容和输出结果,则需要在app类的代码内部添加如下内容:

class app(Frame):

def __init__(self):

Frame.__init__(self)

self.option_add('*Font', 'arial 20 bold')

self.pack(expand = YES, fill =BOTH)

self.master.title('Calculator')

display = StringVar()

Entry(self, relief=RIDGE, textvariable=display,justify='right',

bd=30, bg="powder blue").pack(side=TOP,expand=YES, fill=BOTH)

现在,程序的输出会如下图所示:

添加清除功能按钮

现面,要创建一个清除按钮。当按下这个按钮后,所有显示部件的内容全部被清空。继续在类app中添加如下代码:

for clearButton in (["C"]):

erase = iCalc(self, TOP)

for ichar in clearButton:

button(erase, LEFT, ichar, lambda storeObj=display, q=ichar: storeObj.set(''))

现在,计算器的界面将会变成下图的样子:

添加数字和运算符按钮

使用如下代码,将会添加数字和运行符按钮到计算器的主界面,同样的,代码需要添加在类app中:

for numButton in ("789/", "456*", "123-", "0.+"):

FunctionNum = iCalc(self, TOP)

for iEquals in numButton:

button(FunctionNum, LEFT, iEquals, lambda

storeObj=display, q=iEquals: storeObj

.set(storeObj.get() + q))

现在再运行程序,会发现计算器已经似模似样了:

xCalculator-display-clear-numbers-GUI.jpg.pagespeed.ic.5gTK0Yr59u.webp

添加等于按钮

最后向类app中添加如下代码,用于增加等于按钮:

EqualButton = iCalc(self, TOP)

for iEquals in "=":

if iEquals == '=':

btniEquals = button(EqualButton, LEFT, iEquals)

btniEquals.bind('', lambda e,s=self,

storeObj=display: s.calc(storeObj), '+')

else:

btniEquals = button(EqualButton, LEFT, iEquals,

lambda storeObj=display, s=' %s ' % iEquals: storeObj.set

(storeObj.get() + s))

计算器界面全部完成后的样子,如下图所示:

xCalculator-display-all-GUI.jpg.pagespeed.ic.rMc5OzhTwH.webp

为按钮部件应用事件触发器

最后一步也是最重要的一步,就是为每个按钮部件添加事件触发器,用于侦听特定事件并做出相应的处理,让计算器不仅可以看,还可以计算并输出结果。在类app中添加一个cacl方法用于计算并输出结果:

def calc(self, display):

try:

display.set(eval(display.get()))

except:

display.set("ERROR")

现在,一个简单的Python GUI计算器就全部完成了,全部代码如下:

from tkinter import *

def iCalc(source, side):

storeObj = Frame(source, borderwidth=4, bd=4, bg="powder blue")

storeObj.pack(side=side, expand =YES, fill =BOTH)

return storeObj

def button(source, side, text, command=None):

storeObj = Button(source, text=text, command=command)

storeObj.pack(side=side, expand = YES, fill=BOTH)

return storeObj

class app(Frame):

def __init__(self):

Frame.__init__(self)

self.option_add('*Font', 'arial 20 bold')

self.pack(expand = YES, fill =BOTH)

self.master.title('Calculator')

display = StringVar()

Entry(self, relief=RIDGE, textvariable=display,

justify='right'

, bd=30, bg="powder blue").pack(side=TOP,

expand=YES, fill=BOTH)

for clearButton in (["C"]):

erase = iCalc(self, TOP)

for ichar in clearButton:

button(erase, LEFT, ichar, lambda

storeObj=display, q=ichar: storeObj.set(''))

for numButton in ("789/", "456*", "123-", "0.+"):

FunctionNum = iCalc(self, TOP)

for iEquals in numButton:

button(FunctionNum, LEFT, iEquals, lambda

storeObj=display, q=iEquals: storeObj

.set(storeObj.get() + q))

EqualButton = iCalc(self, TOP)

for iEquals in "=":

if iEquals == '=':

btniEquals = button(EqualButton, LEFT, iEquals)

btniEquals.bind('', lambda e,s=self,

storeObj=display: s.calc(storeObj), '+')

else:

btniEquals = button(EqualButton, LEFT, iEquals,

lambda storeObj=display, s=' %s ' % iEquals: storeObj.set

(storeObj.get() + s))

def calc(self, display):

try:

display.set(eval(display.get()))

except:

display.set("ERROR")

if __name__=='__main__':

app().mainloop()

最后,运行一下程序,仔细体会TKinter的强大吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值