Python综合案例—利用tkinter实现计算器的程序

这篇具有很好参考价值的文章主要介绍了Python综合案例—利用tkinter实现计算器的程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、导入 tkinter 库

定义全局变量

二、定义回调函数

三、创建窗口对象

四、创建标签控件

五、创建数字按钮

六、创建加、减、乘、除和等于按钮

七、创建清空按钮

八、总结


        用Python实现计算器可以让我们更好地理解面向对象编程、GUI 编程和事件驱动编程等概念,并掌握 Python 语言的基本语法和常用库。同时,计算器是一种常见的应用程序,实现它不仅可以提高我们的编程技能,还可以方便我们平时进行简单的计算。

        在编写计算器程序的过程中,我们需要考虑很多问题,如如何设计 GUI 界面、如何处理用户输入、如何进行数值计算等等。这些问题都是实际编写应用程序时必须面对的,因此通过实现计算器程序,我们可以更好地了解实际软件开发中的问题和解决方法。

Python综合案例—利用tkinter实现计算器的程序

用Python实现计算器的过程包括以下步骤:

  1. 导入所需库:我们需要使用 tkinter 库来创建 GUI 界面,并使用 eval 函数来进行数值计算。

  2. 创建 GUI 界面:使用 tkinter 库来创建一个窗口,并在窗口中添加数字按钮、运算符按钮和其他功能按钮,如清除按钮、等于按钮等。同时,也需要在界面上创建一个文本框来显示用户输入和计算结果。

  3. 处理用户输入:通过绑定按钮事件和键盘事件来处理用户对按钮的单击和键盘的输入。当用户单击数字按钮时,将数字添加到文本框中;当用户单击运算符按钮时,将操作符添加到文本框中。同时也需要处理删除字符和清空文本框等操作。

  4. 进行数值计算:当用户单击等于按钮时,使用 eval 函数来计算文本框中的表达式,并将结果显示在文本框中。

  5. 完善程序功能:根据需求可以增加其他功能,如添加小数点、处理错误输入、防止除零等。

一、导入 tkinter 库

在 Python 中,使用 import 语句可以导入其他模块或库。在这个程序中,我们首先需要导入 tkinter 库,以便创建 GUI 界面。具体的语句如下:

import tkinter as tk

这里我们将 tkinter 库重命名为 tk,以便在后面的代码中更方便地使用。

定义全局变量

在计算器程序中,我们需要保存当前输入的数字和运算符,以便进行计算。因此,我们在程序一开始就要定义一些变量来保存这些值。具体的变量有 num1num2operator,它们分别表示当前输入的第一个数字、第二个数字和运算符,初始值均为空字符串。此外,由于这些变量需要在多个函数中使用,因此我们将它们定义为全局变量。具体的语句如下:

# 定义全局变量,用于保存当前输入的数字和运算符
num1 = ''
num2 = ''
operator = ''

二、定义回调函数

在 GUI 界面中,按钮、菜单等控件被点击时会触发相应的事件,我们需要编写回调函数来处理这些事件。在这个程序中,我们需要编写三个回调函数,分别用于将数字、运算符和等于号添加到显示屏上,具体的函数如下:

  • add_digit(digit):该函数用于将数字添加到显示屏上。它的参数 digit 表示当前点击的数字,函数会将该数字添加到 num1num2 变量中,并更新显示屏的内容。如果当前没有输入运算符,则数字会被添加到 num1 中;否则,数字会被添加到 num2 中。具体的代码如下:

  • def add_digit(digit):
        global num1, num2, operator
        if operator == '':
            num1 += str(digit)
            label.config(text=num1)
        else:
            num2 += str(digit)
            label.config(text=num2)
    
  • add_operator(op):该函数用于将运算符添加到显示屏上。它的参数 op 表示当前点击的运算符。函数会将该运算符添加到 operator 变量中,并更新显示屏的内容。如果 num1 不为空,则运算符会被添加到 num1 后面;否则,运算符不会被添加到显示屏上。具体的代码如下:

  • def add_operator(op):
        global num1, num2, operator
        if num1 != '' and num2 == '':
            operator = op
            label.config(text=num1 + operator)
    
  • calculate():该函数用于计算结果。它会根据当前缓存的数字和运算符计算结果,并更新显示屏的内容。具体的代码如下:

  • def calculate():
        global num1, num2, operator
        if num1 != '' and num2 != '' and operator != '':
            num1 = str(eval(num1 + operator + num2))
            num2 = ''
            operator = ''
            label.config(text=num1)
    

    在计算过程中,我们使用了 Python 内置的 eval() 函数,该函数可以将字符串作为代码执行,并返回结果。这里我们将缓存的数字和运算符拼接成一个字符串,并将其传递给 eval() 函数进行计算。

三、创建窗口对象

在 tkinter 中,创建一个窗口对象需要使用 Tk() 构造函数。在这个程序中,我们使用该函数创建了一个名为 window 的窗口对象,并设置了窗口标题为 Calculator。具体的代码如下:

# 创建一个名为 window 的窗口对象
window = tk.Tk()

# 设置窗口标题
window.title('Calculator')

四、创建标签控件

在 tkinter 中,创建一个标签控件需要使用 Label() 构造函数。在这个程序中,我们使用该函数创建了一个名为 label 的标签控件,并设置了其字体、宽度、高度、背景色和文本对齐方式等属性。同时,我们将该标签控件放置在窗口中央,使用 grid() 方法指定其行列号和边距等参数。具体的代码如下:

# 创建一个标签对象,用于显示计算结果
label = tk.Label(window, text='0', font=('Arial', 20), width=15, height=2, bg='white', anchor='e')

# 将标签对象放置在窗口中央
label.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

在这里,row=0column=0 表示该控件位于第 1 行、第 1 列,columnspan=4 表示该控件跨越了 4 列(即占据整个顶部),padx=10pady=10 表示控件边缘和窗口边框之间的水平和垂直间距均为 10。

五、创建数字按钮

在 tkinter 中,创建一个按钮控件需要使用 Button() 构造函数。在这个程序中,我们使用循环语句创建了数字按钮,并设置了其文本、字体、宽度、高度和回调函数等属性。同时,我们使用 grid() 方法指定了按钮的行列号和边距等参数,将其放置在窗口中间。具体的代码如下:

# 创建数字按钮并绑定回调函数
for i in range(1, 10):
    btn = tk.Button(window, text=str(i), font=('Arial', 20), width=3, height=2, command=lambda digit=i:add_digit(digit))
    btn.grid(row=(i-1)//3+1, column=(i-1)%3, padx=5, pady=5)

在这里,range(1, 10) 表示数字按钮的取值范围,循环变量 i 依次取值 1 到 9。text=str(i) 表示按钮的文本为当前的数字;font=('Arial', 20) 表示按钮的字体为 Arial,大小为 20;width=3height=2 表示按钮的宽度和高度;command=lambda digit=i:add_digit(digit) 表示按钮被点击后会调用 add_digit() 函数,并将当前的数字作为参数传递给该函数。在 grid() 方法中,row=(i-1)//3+1column=(i-1)%3 表示按钮的行列号,padx=5pady=5 表示控件边缘和窗口边框之间的水平和垂直间距均为 5。

六、创建加、减、乘、除和等于按钮

在 tkinter 中,创建一个按钮控件需要使用 Button() 构造函数。在这个程序中,我们使用该函数创建了加、减、乘、除和等于按钮,并设置了其文本、字体、宽度、高度和回调函数等属性。同时,我们使用 grid() 方法指定了按钮的行列号和边距等参数,将其放置在窗口中间。具体的代码如下:

# 创建加、减、乘、除、等于按钮并绑定回调函数
btn_add = tk.Button(window, text='+', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('+'))
btn_sub = tk.Button(window, text='-', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('-'))
btn_mul = tk.Button(window, text='*', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('*'))
btn_div = tk.Button(window, text='/', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('/'))
btn_eq = tk.Button(window, text='=', font=('Arial', 20), width=3, height=2, command=calculate)

# 将按钮对象放置在窗口中间
btn_add.grid(row=1, column=3, padx=5, pady=5)
btn_sub.grid(row=2, column=3, padx=5, pady=5)
btn_mul.grid(row=3, column=3, padx=5, pady=5)
btn_div.grid(row=4, column=3, padx=5, pady=5)
btn_eq.grid(row=4, column=2, padx=5, pady=5)

在这里,text='+'text='-'text='*'text='/' 表示加、减、乘、除按钮的文本,text='=' 表示等于按钮的文本;font=('Arial', 20) 表示按钮的字体为 Arial,大小为 20;width=3height=2 表示按钮的宽度和高度;command=lambda:add_operator('+')command=lambda:add_operator('-')command=lambda:add_operator('*')command=lambda:add_operator('/') 表示分别将加、减、乘、除按钮的回调函数设置为 add_operator() 函数,并将相应的运算符作为参数传递给该函数;command=calculate 表示将等于按钮的回调函数设置为 calculate() 函数。在 grid() 方法中,rowcolumn 表示按钮的行列号,padxpady 表示控件边缘和窗口边框之间的水平和垂直间距。

七、创建清空按钮

在 tkinter 中,创建一个按钮控件需要使用 Button() 构造函数。在这个程序中,我们使用该函数创建了一个名为 btn_clear 的清空按钮,并设置了其文本、字体、宽度、高度和回调函数等属性。同时,我们使用 grid() 方法指定了按钮的行列号和边距等参数,将其放置在窗口底部。具体的代码如下:

# 创建清空按钮并绑定回调函数
btn_clear = tk.Button(window, text='C', font=('Arial', 20), width=3, height=2, command=lambda:clear())
btn_clear.grid(row=4, column=0, padx=

八、总结

这个程序使用了 tkinter 库来创建 GUI 界面。它创建一个名为 window 的窗口,并在窗口中央创建了一个标签,用于显示计算结果。然后,它使用循环语句创建了数字按钮,并绑定了回调函数add_digit(),用于将数字添加到显示屏上;使用按钮对象创建了加、减、乘、除、等于按钮,并绑定了回调函数 add_operator()calculate(),分别用于将运算符添加到显示屏上和计算结果;最后,在底部创建了一个清空按钮,并绑定了回调函数 clear(),用于清空显示屏和缓存的数字和运算符。

当用户点击数字按钮时,会调用 add_digit() 函数,该函数会将数字添加到 num1num2 变量中,并更新显示屏的内容。当用户点击加、减、乘、除按钮时,会调用 add_operator() 函数,该函数会将运算符添加到 operator 变量中,并更新显示屏的内容。当用户点击等于按钮时,会调用 calculate() 函数,该函数会根据当前缓存的数字和运算符计算结果,并更新显示屏的内容。最后,当用户点击清空按钮时,会调用 clear() 函数,该函数会清空显示屏和缓存的数字和运算符。

完整代码:文章来源地址https://www.toymoban.com/news/detail-443732.html

import tkinter as tk

# 定义全局变量,用于保存当前输入的数字和运算符
num1 = ''
num2 = ''
operator = ''

# 定义一个函数,用于将数字添加到显示屏上
def add_digit(digit):
    global num1, num2, operator
    if operator == '':
        num1 += str(digit)
        label.config(text=num1)
    else:
        num2 += str(digit)
        label.config(text=num2)

# 定义一个函数,用于将运算符添加到显示屏上
def add_operator(op):
    global num1, num2, operator
    if num1 != '' and num2 == '':
        operator = op
        label.config(text=num1 + operator)

# 定义一个函数,用于计算结果
def calculate():
    global num1, num2, operator
    if num1 != '' and num2 != '' and operator != '':
        num1 = str(eval(num1 + operator + num2))
        num2 = ''
        operator = ''
        label.config(text=num1)

# 创建一个名为 window 的窗口对象
window = tk.Tk()

# 设置窗口标题
window.title('Calculator')

# 创建一个标签对象,用于显示计算结果
label = tk.Label(window, text='0', font=('Arial', 20), width=15, height=2, bg='white', anchor='e')

# 将标签对象放置在窗口中央
label.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

# 创建数字按钮并绑定回调函数
for i in range(1, 10):
    btn = tk.Button(window, text=str(i), font=('Arial', 20), width=3, height=2, command=lambda digit=i:add_digit(digit))
    btn.grid(row=(i-1)//3+1, column=(i-1)%3, padx=5, pady=5)

# 创建加、减、乘、除、等于按钮并绑定回调函数
btn_add = tk.Button(window, text='+', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('+'))
btn_sub = tk.Button(window, text='-', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('-'))
btn_mul = tk.Button(window, text='*', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('*'))
btn_div = tk.Button(window, text='/', font=('Arial', 20), width=3, height=2, command=lambda:add_operator('/'))
btn_eq = tk.Button(window, text='=', font=('Arial', 20), width=3, height=2, command=calculate)

# 将按钮对象放置在窗口中间
btn_add.grid(row=1, column=3, padx=5, pady=5)
btn_sub.grid(row=2, column=3, padx=5, pady=5)
btn_mul.grid(row=3, column=3, padx=5, pady=5)
btn_div.grid(row=4, column=3, padx=5, pady=5)
btn_eq.grid(row=4, column=2, padx=5, pady=5)

# 创建清空按钮并绑定回调函数
btn_clear = tk.Button(window, text='C', font=('Arial', 20), width=3, height=2, command=lambda:clear())
btn_clear.grid(row=4, column=0, padx=5, pady=5)

# 定义一个函数,用于清空显示屏和缓存的数字和运算符
def clear():
    global num1, num2, operator
    num1 = ''
    num2 = ''
    operator = ''
    label.config(text='0')

# 进入主消息循环
window.mainloop()

到了这里,关于Python综合案例—利用tkinter实现计算器的程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python界面开发案例:制作一个计算器软件

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器,对吧 那它这功能是怎么实现的呢? 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有模块环境源码教程皆可点击文章下方

    2023年04月16日
    浏览(55)
  • 利用Python解决利率相关计算问题(利率计算器):本金翻倍,定期取款,多重利率,通货膨胀等问题

    目录 一.原理 二.实际问题举例 多利率问题  存款与本金翻倍  存款与定期取款   存款与通货膨胀 利用python中的for循环或者while循环来计算利率或者解决复利问题。 其中涉及到不同场景下的不同利率问题,利用不同的公式与方法解决。 1.问题描述:小A的爸爸有5万元积蓄存入

    2024年02月06日
    浏览(47)
  • 【JavaEE进阶】 利用Spring简单实现加法计算器和用户登录

    本篇博客主要内容: 理解前后端交互过程 接⼝传参,数据返回,以及⻚⾯展⽰ 需求:输⼊两个整数,点击\\\"点击相加\\\"按钮,显⽰计算结果 效果展示如下: 具体实现步骤,博主大致分为以下几步: 准备工作 约定前后端交互接⼝ 后端服务器代码的书写 创建SpringBoot项⽬: 引⼊Spring Web依

    2024年01月17日
    浏览(51)
  • C++类和对象-多态->案例1计算器类、案例2制作饮品、案例3电脑组装需求分析和电脑组装具体实现

    #includeiostream using namespace std; #includestring //分别利用普通写法和多态技术实现计算器 //普通写法 class Calculator { public:     int getResult(string oper)     {         if (oper == \\\"+\\\") {             return m_Num1 + m_Num2;         }         else if (oper == \\\"-\\\") {             return m_Num

    2024年02月20日
    浏览(42)
  • UIOTOS前端零代码 第7节:(实践)利用嵌套+收发器组件,零代码实现简单计算器功能

    通过嵌套容器嵌套底层页面,再利用收发器组件和工具函数之间的转换,真正做到零代码实现简单计算器功能。 底层页面             步骤1: 打开编辑器,在右边页面中,选择合适的页面路径 新建页面 。 步骤2: 把当前页面命名“按钮”,并缩放至合适的大小,在右边属

    2024年04月14日
    浏览(47)
  • 【Python】简单计算器实现(四)

    解决思路: 最后,我们来看看最简单的运算函数和判断运算符函数。 定义函数: def calculate(n1, n2, operator) param n1: float param n2: float param operator: + - * / return: float 定义函数: def is_operator(e) param e: str return: bool 最后的调用 这里定义了两个变量 result 和 _ 来接收 final_calc 返回的两个

    2024年02月16日
    浏览(40)
  • PyQt6案例3:简单计算器案例

    1、打开QTdesigner 2、选择Dialog without Buttons,并单击“创建”按钮。 3、添加控件。 (1)拖拽“Label”控件,在文本属性中添加文字“请输入第一个数字:”;在Label水平位置拖拽一个“Line Edit”控件。 (2)拖拽“Label”控件,在文本属性中添加文字“请输入第二个额数字:”

    2024年02月01日
    浏览(47)
  • AndroidStudio案例——简单计算器

                设计一款带有可视化界面的简单计算器,供用户输入数据并查看结果。用户通过点击相应按钮(加减乘除运算符、等号、数字)输入正确的表达式,计算器进行相应的加减乘除运算,且可以进行小数和整数的运算;长按清除按钮3秒,可以清除已录入的内容。

    2024年02月02日
    浏览(32)
  • 【微信小程序】计算器案例

    🏆今日学习目标:第二十一期——计算器案例 ✨个人主页:颜颜yan_的个人主页 ⏰预计时间:30分钟 🎉专栏系列:我的第一个微信小程序 嗨嗨嗨,好久没更新小程序专栏了,本期浅浅用小程序写一个计算器。 最终代码会上传至资源噢~ 新建一个项目,在app.json中配置文件导

    2024年01月17日
    浏览(54)
  • 微信小程序案例——计算器

    1、创建项目 按照惯例,做一些初始化工作 2、设置导航栏 在 app.json 文件设置 window 配置项 pages/index/index.wxml 文件 1、编写页面整体结构 2、编写结果区域结构 两行内容:第一行是当前的计算式,第二行是当前计算结果 3、编写按钮区域第一行按钮的结构 第一行包含四个按钮:

    2024年04月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包