python tkinter 做个简单的计算器的方法

下面是关于Python Tkinter做计算器的完整攻略。

确认开发环境

要在Python中开发GUI应用程序,必须使用tkinter模块。大多数Python发行版都已经包含了Tk和tkinter,也可以使用pip来安装。确保安装了Python Tkinter的最新版本。

导入tkinter模块

在Python中,要使用tkinter,首先需要导入库:

import tkinter as tk

创建GUI应用程序

创建GUI应用程序时,需要创建一个主窗口。在tkinter中,可以使用Tk()来实现:

# 创建主窗口
root = tk.Tk()  
root.title("Calculator")

添加显示屏幕

计算器需要一个显示屏幕来显示结果,可以使用tkinter中的Entry组件来实现。在这里创建Entry组件,设置为只读:

# 添加显示屏幕
e = tk.Entry(root, width=35, borderwidth=5,font=('Helvetica', 10, 'bold'),justify='right',state='readonly')
e.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

我们这里定义了显示屏幕(即Entry)的一些属性,包括宽度、边框宽度、字体、对齐方式等。

定义数值按钮和普通按钮

计算器有10个数字按钮,加减乘除符号以及小数点按钮。我们可以写一个函数来处理所有这些数值:

# 定义数值按钮和普通按钮
def button_click(number):
    current = e.get()
    e.configure(state='normal')
    e.delete(0, tk.END)
    e.insert(0, str(current) + str(number))
    e.configure(state='readonly')

button_1 = tk.Button(root, text="1", padx=40, pady=20, command=lambda: button_click(1))
button_1.grid(row=1, column=0)

button_2 = tk.Button(root, text="2", padx=40, pady=20, command=lambda: button_click(2))
button_2.grid(row=1, column=1)

# 诸如此类,剩下的我就不一一列举了,可以自己补充

定义算法按钮

计算器还需要加减乘除符号等算法按钮。单击这些按钮后,它们应向显示器添加相应的符号,并准备进行计算。

# 定义加减乘除按钮
def button_add():
    first_number = e.get()
    global f_num
    global math
    math = "addition"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_subtract():
    first_number = e.get()
    global f_num
    global math
    math = "subtraction"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_multiply():
    first_number = e.get()
    global f_num
    global math
    math = "multiplication"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_divide():
    first_number = e.get()
    global f_num
    global math
    math = "division"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_clear():
    e.delete(0, tk.END)

def button_equal():
    second_number = e.get()
    e.delete(0, tk.END)

    if math == "addition":
        e.insert(0, f_num + float(second_number))
    elif math == "subtraction":
        e.insert(0, f_num - float(second_number))
    elif math == "multiplication":
        e.insert(0, f_num * float(second_number))
    elif math == "division":
        e.insert(0, f_num / float(second_number))

将所有按钮添加到图形界面

最后,将所有按钮添加到主窗口中。

# 将所有按钮添加到图形界面
button_1 = tk.Button(root, text="1", padx=40, pady=20, command=lambda: button_click(1))
button_1.grid(row=1, column=0)

button_2 = tk.Button(root, text="2", padx=40, pady=20, command=lambda: button_click(2))
button_2.grid(row=1, column=1)

# 诸如此类,剩下的我就不一一列举了,可以自己补充

# 数学操作按钮
button_add = tk.Button(root, text="+", padx=39, pady=20, command=button_add)
button_add.grid(row=5, column=0)

button_subtract = tk.Button(root, text="-", padx=41, pady=20, command=button_subtract)
button_subtract.grid(row=4, column=0)

button_multiply = tk.Button(root, text="*", padx=40, pady=20, command=button_multiply)
button_multiply.grid(row=3, column=0)

button_divide = tk.Button(root, text="/", padx=41, pady=20, command=button_divide)
button_divide.grid(row=2, column=0)

button_clear = tk.Button(root, text="Clear", padx=79, pady=20, command=button_clear)
button_clear.grid(row=6, column=1, columnspan=2)

button_equal = tk.Button(root, text="=", padx=91, pady=20, command=button_equal)
button_equal.grid(row=6, column=3, columnspan=2)

示例

下面是一个完整的计算器程序示例:

import tkinter as tk

def button_click(number):
    current = e.get()
    e.configure(state='normal')
    e.delete(0, tk.END)
    e.insert(0, str(current) + str(number))
    e.configure(state='readonly')

def button_add():
    first_number = e.get()
    global f_num
    global math
    math = "addition"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_subtract():
    first_number = e.get()
    global f_num
    global math
    math = "subtraction"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_multiply():
    first_number = e.get()
    global f_num
    global math
    math = "multiplication"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_divide():
    first_number = e.get()
    global f_num
    global math
    math = "division"
    f_num = float(first_number)
    e.delete(0, tk.END)

def button_clear():
    e.delete(0, tk.END)

def button_equal():
    second_number = e.get()
    e.delete(0, tk.END)

    if math == "addition":
        e.insert(0, f_num + float(second_number))
    elif math == "subtraction":
        e.insert(0, f_num - float(second_number))
    elif math == "multiplication":
        e.insert(0, f_num * float(second_number))
    elif math == "division":
        e.insert(0, f_num / float(second_number))

# 创建主窗口
root = tk.Tk()
root.title("Calculator")

# 添加显示屏幕
e = tk.Entry(root, width=35, borderwidth=5,font=('Helvetica', 10, 'bold'),justify='right',state='readonly')
e.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

# 数值按钮和普通按钮
button_1 = tk.Button(root, text="1", padx=40, pady=20, command=lambda: button_click(1))
button_1.grid(row=1, column=0)

button_2 = tk.Button(root, text="2", padx=40, pady=20, command=lambda: button_click(2))
button_2.grid(row=1, column=1)

button_3 = tk.Button(root, text="3", padx=40, pady=20, command=lambda: button_click(3))
button_3.grid(row=1, column=2)

button_4 = tk.Button(root, text="4", padx=40, pady=20, command=lambda: button_click(4))
button_4.grid(row=2, column=0)

button_5 = tk.Button(root, text="5", padx=40, pady=20, command=lambda: button_click(5))
button_5.grid(row=2, column=1)

button_6 = tk.Button(root, text="6", padx=40, pady=20, command=lambda: button_click(6))
button_6.grid(row=2, column=2)

button_7 = tk.Button(root, text="7", padx=40, pady=20, command=lambda: button_click(7))
button_7.grid(row=3, column=0)

button_8 = tk.Button(root, text="8", padx=40, pady=20, command=lambda: button_click(8))
button_8.grid(row=3, column=1)

button_9 = tk.Button(root, text="9", padx=40, pady=20, command=lambda: button_click(9))
button_9.grid(row=3, column=2)

button_0 = tk.Button(root, text="0", padx=40, pady=20, command=lambda: button_click(0))
button_0.grid(row=4, column=0)

button_dot = tk.Button(root, text=".", padx=42, pady=20, command=lambda: button_click("."))
button_dot.grid(row=4, column=1)

# 数学操作按钮
button_add = tk.Button(root, text="+", padx=39, pady=20, command=button_add)
button_add.grid(row=5, column=0)

button_subtract = tk.Button(root, text="-", padx=41, pady=20, command=button_subtract)
button_subtract.grid(row=4, column=0)

button_multiply = tk.Button(root, text="*", padx=40, pady=20, command=button_multiply)
button_multiply.grid(row=3, column=0)

button_divide = tk.Button(root, text="/", padx=41, pady=20, command=button_divide)
button_divide.grid(row=2, column=0)

# 其他按钮
button_clear = tk.Button(root, text="Clear", padx=79, pady=20, command=button_clear)
button_clear.grid(row=6, column=1, columnspan=2)

button_equal = tk.Button(root, text="=", padx=91, pady=20, command=button_equal)
button_equal.grid(row=6, column=3, columnspan=2)

root.mainloop()

此计算器程序可以将所有数字、小数点和算法组合在一起以进行计算,而且界面布局也相当简洁梳理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python tkinter 做个简单的计算器的方法 - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • Python Pycurl的属性与方法案例详解

    在Python中,可以使用pycurl模块来进行网络通信。pycurl模块是一个Python接口,用于与libcurl库进行交互。以下是详细的攻略,介绍pycurl模块的属性和方法: 设置URL和选项 可以使用pycurl模块设置URL和选项。以下是一个示例,演示如何使用pycurl模块设置URL和选项: import pycurl # 创建pycurl对象…

    python 2023年5月14日
    00
  • 详解Python的单元测试

    详解Python的单元测试 在Python中,单元测试是一种测试方法,用于测试代码的各个部分是否按照预期工作。本文将为您详细讲解Python的单元测试,包括何定义和使用单测试,并提供两个示例说明。 单元测试的基本概念 单元测试是指对代码中的最小可测试单元进行测试,通常是函数或方法。单元测试的目的是确保每个单元都按照期工作,并且在修改代码不会破坏现有的功能。以…

    python 2023年5月14日
    00
  • 详解Python PIL ImageOps.fit()方法

    Python PIL库提供了许多图像处理方法,其中PIL.ImageOps模块的fit()方法可以在保持纵横比的同时裁剪图像或缩放图像,接下来我们将详细讲解该方法的使用。 方法概述 PIL.ImageOps.fit()方法的语法如下: PIL.ImageOps.fit(image, size, method=3, bleed=0.0, centering=(…

    python-answer 2023年3月25日
    00
  • python中的迭代和可迭代对象代码示例

    迭代是在Python中一个非常常用的操作,它被广泛应用于列表、元组、字典等可迭代对象中。迭代可谓Python中最常见的编程范式之一,所以学习迭代是Python编程必不可少的技能之一。下面就来详细讲解一下Python中的迭代和可迭代对象。 什么是可迭代对象 在Python中,可迭代对象就是可以使用for循环进行遍历的对象。常见的Python中的可迭代对象有列表…

    python 2023年5月14日
    00
  • python3 xpath和requests应用详解

    以下是关于Python3 XPath和requests应用详解的攻略: Python3 XPath和requests应用详解 在Python中,可以使用XPath和requests库进行网络爬虫开发。以下是Python3 XPath和requests应用详解的攻略。 使用XPath解析HTML文档 使用lxml库解析HTML文档时,需要使用etree模块,并…

    python 2023年5月14日
    00
  • 详解Python:面向对象编程

    详解Python: 面向对象编程攻略 什么是面向对象编程(Object-Oriented Programming, OOP) 面向对象编程是一种编程思想,它将软件系统中的对象抽象为类,一个类包含了数据和操作这些数据的方法。使用面向对象编程可以使得代码更加模块化、可复用、易于维护和扩展。 面向对象编程的核心概念包括类、对象、继承、多态等。 Python中的面向…

    python 2023年5月31日
    00
  • python字符串操作的15种方法汇总

    以下是关于 Python 字符串操作的 15 种方法汇总的攻略: 问题描述 在 Python 中,字符串是一种常见的数据类型。本文将介绍 Python 中字符串的 15 种方法。 解决方法 以下是 Python 字符串操作的 15 种方法: 字符串拼接 可以使用 +算符将两个字符串拼接在一起。示例代码如下: python str1 = ‘Hello’ str…

    python 2023年5月13日
    00
  • Python 作为小程序后端的三种实现方法(推荐)

    下面为您详细讲解“Python 作为小程序后端的三种实现方法(推荐)”的完整攻略。 1. 背景 随着小程序的流行,越来越多的开发者开始选择使用 Python 作为小程序后端,但是 Python 作为一门解释性的语言,在生产环境中还需要做一定的优化才能满足性能的要求。针对这种情况,本文将介绍三种 Python 作为小程序后端的实现方法,以供参考。 2. 方法一…

    python 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部