python的Tkinter库简单应用——开发一个简易计算器

利用python的Tkinter库开发一个简易计算器


前言

任何主流语言都可以开发一个简易的计算器,本篇我们将选用python来开发!附源代码


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验准备

1.开发软件选用——jupyter notebook
能编写python的软件有很多,本次实验我使用,当你要使用jupyter notebook首先要安装anaconda,安装的教程如下Anaconda 的安装教程(图文)但要注意的是Anaconda国内安装的清华源不可用,需要用到清华镜像,可在百度自查,这里就不附链接了。

2.图形界面的实现——Tkinter

当我们用python实现图形界面是,我们不得不用到的包就是Tkinter。Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。因为其语言简单易读,容易上手,这也是我选择python来做一个计算器的原因。若想详细了解Tkinter,可以看下大佬的详解,附链接:Python GUI之tkinter窗口视窗教程大集合

二、开发步骤步骤

1.引入库

这时候我们要调用python的Tkinter和math两个包,需要注意的是在python3以后Tkinter的调用‘T’是大写!!!不然编译会报错。
代码如下:

import math
import tkinter as tk

2.界面设计

程序设计主要分两大部分,一部分是界面设计,另一部分则是实现计算。首先我们来看下界面设计。首先我们先搭建一个框架,可以利用循环来补入按键,在这之前我们要注意给计算器初始化
代码如下(示例):

class Calc(tk.Tk):
    """计算器窗体类"""
    def __init__(self):
        """初始化实例"""
        tk.Tk.__init__(self)
        self.title("我的计算器")
        self.memory = 0  # 暂存数值
        self.Demo()

    def Demo(self):
        """创建界面"""
        btn_list = ["C", "(", ")", "/",
                    "7", "8", "9", "*",
                    "4", "5", "6", "-",
                    "1", "2", "3", "+",
                    "+/-", "0", ".", "="]
        r = 1
        c = 0
        for b in btn_list:
            self.button = tk.Button(self, text=b, width=5,
                                    command=(lambda x=b: self.operate(x)))
            self.button.grid(row=r, column=c, padx=3, pady=6)
            c += 1
            if c > 3:
                c = 0
                r += 1
        self.entry = tk.Entry(self, width=24, borderwidth=2,
                              bg="black", font=("黑体", 11))
        self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)

接下来就是实现算法部分了,在以往c++中为了实现一个多项式如:2-(3-2),当一下子多项式输入在计算器中,这一类关于括号优先级问题就得被考虑,还需要将数字和符号分别压入堆栈,判断优先级,当我们使用python时,则可以通过Tkinter文本框(entry)来实现entry的用法有很多,可看Python XML解析来了解更多,这里就不一一赘述了
代码如下:

def operate(self, key):
        """press the button"""
        if key == "=":  # 输出结果
            result = eval(self.entry.get())#获取文本框输入的值(值为=)
            self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果
        elif key == "C":  # 清空输入框
            self.entry.delete(0, tk.END)#将结果清零
        elif key == "+/-":  # 取相反数
            if "=" in self.entry.get():
                self.entry.delete(0, tk.END)
            elif self.entry.get()[0] == "-":
                self.entry.delete(0)
            else:
                self.entry.insert(0, "-")
        else:  # 其他键
            if "=" in self.entry.get():
                self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, key)
if __name__ == "__main__":
    Calculator().mainloop()

3.关键——实现Tkinter库的调用

python提供了多个图形开发界面的库,常用的库就用Tkinter,使用Tkinter可以大大减少代码的行数,思路也较为清晰简单,简单易读,但在编写过程中,主要通过运用Tkinter的函数,这也使得程序的算法没有那么的突出。


总结

本文仅仅简单介绍了Tkinter的使用,来开发一个简易的计算器。大家可以根据可以通过下面的源代码,运行下来试一下,另附演示动图。另外对于本文中提到的Tkinter库有感兴趣的可以看下上面的链接,很详细

动态演示

源代码

import tkinter as tk
class Calculator(tk.Tk):
    """计算器窗体类"""
    def __init__(self):
        """初始化实例"""
        tk.Tk.__init__(self)
        self.title("我的计算器")
        self.memory = 0  # 暂存数值
        self.Demo()
        
    def Demo(self):
        """Create the Demo"""
        btn_list = ["C", "(", ")", "/",
                    "7", "8", "9", "*",
                    "4", "5", "6", "-",
                    "1", "2", "3", "+",
                    "+/-", "0", ".", "="]
        r = 1
        c = 0
        for b in btn_list:
            self.button = tk.Button(self, text=b, width=5,
                                    command=(lambda x=b: self.operate(x)))
            self.button.grid(row=r, column=c, padx=3, pady=6)
            c += 1
            if c > 3:
                c = 0
                r += 1
        self.entry = tk.Entry(self, width=21, borderwidth=3,
                              bg="light blue", font=("黑体", 11))
        self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)

    def operate(self, key):
        """press the button"""
        if key == "=":  # 输出结果
            result = eval(self.entry.get())#获取文本框输入的值(值为=)
            self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果
        elif key == "C":  # 清空输入框
            self.entry.delete(0, tk.END)#将结果清零
        elif key == "+/-":  # 取相反数
            if "=" in self.entry.get():
                self.entry.delete(0, tk.END)
            elif self.entry.get()[0] == "-":
                self.entry.delete(0)
            else:
                self.entry.insert(0, "-")
        else:  # 其他键
            if "=" in self.entry.get():
                self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, key)

if __name__ == "__main__":
    Calculator().mainloop()
  • 12
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用 Python 开发图形化界面的计算器,可以使用以下几种方法之一: 1. 使用 TkinterTkinterPython 的标准图形用户界面,可以轻松创建简单的图形化界面。 2. 使用 PyQt:PyQt 是一个功能强大的图形用户界面,可以用来开发复杂的应用程序。 3. 使用 PyGTK:PyGTK 是另一个用于开发图形化界面的,具有良好的可扩展性和易用性。 4. 使用 wxPython:wxPython 是一个用于创建跨平台图形用户界面的,支持 Windows、MacOS 和 Linux 等操作系统。 根据你的需求和偏好,可以选择适合你的开发你的计算器。 ### 回答2: 使用Python开发图形化界面的计算器可以通过使用Tkinter来完成。TkinterPython的一种标准GUI,它可以用来创建图形化界面的各种组件。 首先,我们需要在计算器界面中设计各种按钮和显示屏。可以使用Tkinter的Button、Entry和Label等组件来实现这些功能。在设计中,需要考虑到按钮的布局和功能。 其次,我们需要为每个按钮设置相应的功能,例如当用户点击数字按钮时,将数字显示在显示屏上。可以使用Tkinter提供的command参数来设置按钮的功能,并将按钮与相应的函数关联起来。 然后,我们需要定义计算器功能的逻辑,例如实现加法、减法、乘法和除法等运算。可以通过编写对应的函数来实现这些逻辑,并在按钮的功能中调用这些函数。 最后,我们可以通过调用Tkinter的mainloop()函数来启动计算器的界面,使得用户可以使用图形化界面进行计算。 总而言之,使用Python开发图形化界面的计算器,需要使用Tkinter创建界面,设置按钮的功能,并实现计算器功能的逻辑。这样用户就可以通过图形化界面方便地进行计算。 ### 回答3: 使用Python开发图形化界面的计算器需要借助Tkinter,该Python的标准之一,提供了创建GUI应用程序的模块和工具。 创建一个基本的图形化界面计算器,可以按照以下步骤进行: 1. 导入Tkinter模块,创建主窗口。 2. 添加一个显示框,用于显示计算器的输入和输出结果。 3. 创建按钮,包括数字按钮和操作按钮(如加、减、乘、除等),并将其放置在适当的位置。 4. 编写按钮点击事件的处理函数。 5. 按需设置按钮的外观和功能,如设置字体、大小、颜色等。 6. 启动主循环,让计算器界面一直保持显示状态。 例如,当按下数字按钮时,可以将对应的数字添加到显示框中。而当按下操作按钮时,可以根据显示框中的内容执行相应的操作,并将结果显示在显示框中。 此外,还需要考虑用户可能输入非法表达式的情况,如除数为0等,需要进行相应的异常处理和错误信息提示。 通过以上步骤,就可以实现一个基本的图形化界面计算器。当然,根据需要,还可以添加更多的功能和界面元素,如括号、幂运算、计算器历史记录等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值