python GUI计算器的实现

 更新时间:2020年10月09日 14:45:59   作者:叫我龙总  
这篇文章主要介绍了python gui计算器的实现,帮助大家更好的理解和学习python gui编程,感兴趣的朋友可以了解下

01 实现

我们几乎每个人都用过计算器,大家对于计算器应该都是比较熟悉的,计算器整体也是比较简单的,主要包括:显示器、键盘、运算的逻辑处理等,计算器的图形界面我们使用 tkinter 库实现,下面看一下具体实现过程。

首先,我们画一个主窗口,代码实现如下:

# 创建主窗口
tk = tkinter.Tk()
# 设置窗口大小和位置
tk.geometry('300x210+500+200')
# 不允许改变窗口大小
tk.resizable(False, False)
# 设置窗口标题
tk.title('计算器')

看一下效果:

我们接着画显示器,代码实现如下:

# 自动刷新字符串变量,可用 set 和 get 方法进行传值和取值
contentVar = tkinter.StringVar(tk, '')
# 创建单行文本框
contentEntry = tkinter.Entry(tk, textvariable=contentVar)
# 设置文本框为只读
contentEntry['state'] = 'readonly'
# 设置文本框坐标及宽高
contentEntry.place(x=20, y=10, width=260, height=30)

看一下效果:

再接着画键盘,代码实现如下:

# 按钮显示内容
bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '=']
index = 0
# 将按钮进行 5x4 放置
for row in range(5):
  for col in range(4):
    d = bvalue[index]
    index += 1
    btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))
    btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20)

看一下效果:

界面画完了,我们看一下处理运算逻辑的代码,如下所示:

# 点击事件
def onclick(btn):
  # 运算符
  operation = ('+', '-', '*', '/', '**', '//')
  # 获取文本框中的内容
  content = contentVar.get()
  # 如果已有内容是以小数点开头的,在前面加 0
  if content.startswith('.'):
    content = '0' + content # 字符串可以直接用+来增加字符
  # 根据不同的按钮作出不同的反应
  if btn in '0123456789':
    # 按下 0-9 在 content 中追加
    content += btn
  elif btn == '.':
    # 将 content 从 +-*/ 这些字符的地方分割开来
    lastPart = re.split(r'\+|-|\*|/', content)[-1]
    if '.' in lastPart:
      # 信息提示对话框
      tkinter.messagebox.showerror('错误', '重复出现的小数点')
      return
    else:
      content += btn
  elif btn == 'C':
    # 清除文本框
    content = ''
  elif btn == '=':
    try:
      # 对输入的表达式求值
      content = str(eval(content))
    except:
      tkinter.messagebox.showerror('错误', '表达式有误')
      return
  elif btn in operation:
    if content.endswith(operation):
      tkinter.messagebox.showerror('错误', '不允许存在连续运算符')
      return
    content += btn
  elif btn == '√':
    # 从 . 处分割存入 n,n 是一个列表
    n = content.split('.')
    # 如果列表中所有的都是数字,就是为了检查表达式是不是正确的
    if all(map(lambda x: x.isdigit(), n)):
      content = eval(content) ** 0.5
    else:
      tkinter.messagebox.showerror('错误', '表达式错误')
      return
  # 将结果显示到文本框中
  contentVar.set(content)

整体实现完了之后,我们来演示一下,看一下效果:

是不是有内味了。

02 打包

为了更加方便的使用,我们可以将 Python 代码打包成 exe 文件,打包我们使用 pyinstaller,安装用 pip install pyinstaller 命令即可。

打包时我们使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此时打包生成的文件是使用的默认图标,如果我们想指定自己的图标可以添加参数 --icon="xxx\xxx.ico",打包生成的文件在 dist 目录。

如下图所示:

此时,我们直接运行 exe 文件就行了。

03 总结

本文我们使用 Python 实现了一个简易的计算器,大家如果有兴趣的话,可以尝试添加更多的功能以及对键盘进行个性化修改。

以上就是python GUI计算器的实现的详细内容,更多关于python 计算器的资料请关注脚本之家其它相关文章!

相关文章

  • 极简的Python入门指引

    极简的Python入门指引

    这篇文章是一个极简的Python入门指引、原文在网络上人气相当高,将一些基本知识用实例代码说明,需要的朋友可以参考下
    2015-04-04
  • Python实现比较扑克牌大小程序代码示例

    Python实现比较扑克牌大小程序代码示例

    这篇文章主要介绍了Python实现比较扑克牌大小程序代码示例,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • Python二叉搜索树与双向链表转换算法示例

    Python二叉搜索树与双向链表转换算法示例

    这篇文章主要介绍了Python二叉搜索树与双向链表转换算法,涉及Python二叉树构建、遍历及链表构造等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Python实现K-近邻算法的示例代码

    Python实现K-近邻算法的示例代码

    k-近邻算法(K-Nearest Neighbour algorithm),又称 KNN 算法,是数据挖掘技术中原理最简单的算法。本文将介绍实现K-近邻算法的示例代码,需要的可以参考一下
    2022-09-09
  • python getopt模块使用实例解析

    python getopt模块使用实例解析

    这篇文章主要介绍了python getopt模块使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 深入浅析Python中join 和 split详解(推荐)

    深入浅析Python中join 和 split详解(推荐)

    这篇文章主要介绍了Python中join 和 split详解的相关资料,本文还通过一个示例给大家介绍python join 和 split方法 的使用,需要的朋友可以参考下
    2016-06-06
  • Python 多线程共享变量的实现示例

    Python 多线程共享变量的实现示例

    这篇文章主要介绍了Python 多线程共享变量的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python实现的矩阵转置与矩阵相乘运算示例

    Python实现的矩阵转置与矩阵相乘运算示例

    这篇文章主要介绍了Python实现的矩阵转置与矩阵相乘运算,结合实例形式分析了Python针对矩阵进行转置与相乘运算的相关实现技巧与操作注意事项,需要的朋友可以参考下
    2019-03-03
  • Python中文竖排显示的方法

    Python中文竖排显示的方法

    这篇文章主要介绍了Python中文竖排显示的方法,可实现Python将中文竖排输出显示的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Anaconda 离线安装 python 包的操作方法

    Anaconda 离线安装 python 包的操作方法

    今天小编就为大家分享一篇Anaconda 离线安装 python 包的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论