基于tkinter界面的计算器功能设计

题目:

 计算器是一种较为常用的小工具,简单的计算器有10个数字键、小数点、四则运算符、退格、删除、清零等按钮,还要有显示区以及等号按钮,按键较多,如何排列得既漂亮美观又方便实用,需要仔细进行设计。请利用本节介绍的布局方法,实现下图所示的计算器界面的布局。


代码展示

​
​
from tkinter import *
import tkinter as tk
win = tk.Tk()
win.title("计算器")
win.geometry("300x300")
result_num = StringVar()
result_num.set("")
label = Label(win, width=25, height=2, anchor=SE, textvariable=result_num, relief="raised")
label.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
Button(win, text="C", width=5, command=lambda: result_num.set("")).grid(row=1, column=0)
Button(win, text="DEL", width=5, command=lambda: result_num.set(result_num.get()[:-1])).grid(row=1, column=1)
Button(win, text="BCK", width=5, command=lambda: result_num.set(result_num.get()[:-1])).grid(row=1, column=2)
Button(win, text="/", width=5, command=lambda: result_num.set(result_num.get()+"/")).grid(row=1, column=3)
Button(win, text="7", width=5, command=lambda: result_num.set(result_num.get()+"7")).grid(row=2, column=0)
Button(win, text="8", width=5, command=lambda: result_num.set(result_num.get()+"8")).grid(row=2, column=1)
Button(win, text="9", width=5, command=lambda: result_num.set(result_num.get()+"9")).grid(row=2, column=2)
Button(win, text="*", width=5, command=lambda: result_num.set(result_num.get()+"*")).grid(row=2, column=3)
Button(win, text="4", width=5, command=lambda: result_num.set(result_num.get()+"4")).grid(row=3, column=0)
Button(win, text="5", width=5, command=lambda: result_num.set(result_num.get()+"5")).grid(row=3, column=1)
Button(win, text="6", width=5, command=lambda: result_num.set(result_num.get()+"6")).grid(row=3, column=2)
Button(win, text="-", width=5, command=lambda: result_num.set(result_num.get()+"-")).grid(row=3, column=3)
Button(win, text="1", width=5, command=lambda: result_num.set(result_num.get()+"1")).grid(row=4, column=0)
Button(win, text="2", width=5, command=lambda: result_num.set(result_num.get()+"2")).grid(row=4, column=1)
Button(win, text="3", width=5, command=lambda: result_num.set(result_num.get()+"3")).grid(row=4, column=2)
Button(win, text="+", width=5, command=lambda: result_num.set(result_num.get()+"+")).grid(row=4, column=3)
Button(win, text="0", width=5, command=lambda: result_num.set(result_num.get()+"0")).grid(row=5, column=0)
Button(win, text=".", width=5, command=lambda: result_num.set(result_num.get()+".")).grid(row=5, column=1)
Button(win, text="=", width=12, command=lambda: result_num.set(result_num.get()+"="+str(eval(result_num.get())))).grid(row=5, column=2, columnspan=2)
win.mainloop()

​

​

思路分析:

首先,我先按照图片上的计算机界面利用tkinter方面的知识设计了计算机界面,然后再添加具体的功能。

一.首先,需要导入tkinter包(注意,tkinter是内置的python模块,直接使用就可以)

import tkinter as tk         #导入tkinter库
win = tk.Tk()               #初始化根窗体实例
win.title("计算机")      #窗口标题
win.geometry("800x600")     #设置窗口大小
win.mainloop()            #主事件循环

这一个代码块是创建tkinter界面必须要有的代码,每一行代码分别有其各自的作用 

二.设置label文本框,以及button按钮(界面设计的核心部分)

label = Label(win, width=25, height=2, anchor=SE, textvariable=result_num, relief="raised")
label.grid(row=0, column=0, columnspan=4, padx=5, pady=5)

 这写代码是创建Label,用于显示文本或图像,在Label显示我们要输入的数字以及运算的过程,width和hidth定义了文本框的高度及宽度,anchor是锚点位置,textvarible是事件绑定。

Button(win, text="DEL", width=5, command=lambda: result_num.set(result_num.get()[:-1])).grid(row=1, column=1)
Button(win, text="BCK", width=5, command=lambda: result_num.set(result_num.get()[:-1])).grid(row=1, column=2)
Button(win, text="/", width=5, command=lambda: result_num.set(result_num.get()+"/")).grid(row=1, column=3)

 button的使用,这里用到了command,实现事件绑定,也就是点击这个按钮,会触发函数的执行,这里的函数是匿名函数(如图所示)。运用到了grid布局,按照行列的方式布局。


遇到的问题以及解决问题的方式:

遇到的问题就是就是事件的绑定,也就是command函数的使用,当点击按钮时就会触发函数的执行,事件绑定有三种使用方式,分别是command,bind,protocal,最常用的是command。这其中还用到了变量的传递,将控件的属性与变量进行绑定,一个变化另一个也会发生变化,这一部分我从课本上以及B站详细的学习了一下,才会设计计算器中变量的传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值