首页 > 编程语言 >python---计算器界面以及功能

python---计算器界面以及功能

时间:2024-06-21 22:29:12浏览次数:23  
标签:python height --- num grid result 计算器 root row

  1. 代码:

import tkinter as tk
from tkinter import *
root = Tk()
root.title("calculate")
result_num = tk.StringVar()
result_num.set('') #在Tkinter中,StringVar 是一个特殊的变量类,它用于与Tkinter的某些部件(如标签Label、条目Entry等)的文本属性进行双向绑定。
                    # 这意味着当StringVar的值改变时,与之关联的部件的文本也会自动更新,同样地,如果部件的文本被用户或其他方式更改,StringVar的值也会相应更新。
tk.Label(root,
         textvariable=result_num,  height=2,
         width=20).grid(row=1, column=1, columnspan=4)
b1 = tk.Button(root, text="C",width=10,height=2,command=lambda :clear()).grid(row=2)
b2 = Button(root, text="DEL",width=10,height=2,command=lambda :back()).grid(row=2,column=1)
b3 = Button(root, text="BCK",width=10,height=2,command=lambda :back()).grid(row=2,column=2)
b4 = Button(root, text="/",width=10,height=2,command=lambda: button('/')).grid(row=2,column=3)
b5 = Button(root, text="7",width=10,height=2,command=lambda: button('7')).grid(row=3,column=0)
b6 = Button(root, text="8",width=10,height=2,command=lambda: button('8')).grid(row=3,column=1)
b8 = Button(root, text="9",width=10,height=2,command=lambda: button('9')).grid(row=3,column=2)
b9 = Button(root, text="*",width=10,height=2,command=lambda: button('*')).grid(row=3,column=3)
b10 = Button(root, text="4",width=10,height=2,command=lambda: button('4')).grid(row=4,column=0)
b11 = Button(root, text="5",width=10,height=2,command=lambda: button('5')).grid(row=4,column=1)
b12 = Button(root, text="6",width=10,height=2,command=lambda: button('6')).grid(row=4,column=2)
b13 = Button(root, text="-",width=10,height=2,command=lambda: button('-')).grid(row=4,column=3)
b14 = Button(root, text="1",width=10,height=2,command=lambda: button('1')).grid(row=5,column=0)
b15 = Button(root, text="2",width=10,height=2,command=lambda: button('2')).grid(row=5,column=1)
b16 = Button(root, text="3",width=10,height=2,command=lambda: button('3')).grid(row=5,column=2)
b17 = Button(root, text="+",width=10,height=2,command=lambda: button('+')).grid(row=5,column=3)
b18 = Button(root, text="0",width=10,height=2,command=lambda: button('0')).grid(row=6,column=0)
b19 = Button(root, text=".",width=10,height=2,command=lambda: button('.')).grid(row=6,column=1)
b20 = Button(root, text="=",width=22,height=2,command=lambda :calculation()).grid(row=6,column=2,columnspan=2)
def button(x):
    print('X:\t', x)
    result_num.set(result_num.get() + x)#将当前从按钮获取的值 x 附加(拼接)到现有字符串的末尾。
def calculation():
    c = result_num.get()
    result = eval(c) #使用Python的eval函数来计算该表达式的值
    result_num.set(str(result)) #将计算结果转换为字符串,并使用result_num.set()方法更新StringVar的值,这将自动更新与result_num关联的Tkinter部件(如Label)的文本。
def clear():
    result_num.set("")
def back():
    b=result_num.get()
    if b:
        result_num.set(b[:-1])
root.mainloop()

  1. 截图:

  1. 分析:

在Tkinter中,StringVar 是一个特殊的变量类,它用于与Tkinter的某些部件(如标签Label、条目Entry等)的文本属性进行双向绑定。这意味着当StringVar的值改变时,与之关联的部件的文本也会自动更新,同样地,如果部件的文本被用户或其他方式更改,StringVar的值也会相应更新。

result_num = tk.StringVar(): 这一行创建了一个新的StringVar对象,并将其赋值给变量result_num。

result_num.set(''): 这一行调用StringVar对象的set方法,并将一个空字符串('')作为参数传递给它。这会将StringVar的当前值设置为空字符串。之后,如果你将这个StringVar对象与某个Tkinter部件(如Label)的textvariable属性关联起来

calculation函数中,你正在从result_num StringVar中获取当前的字符串值(这通常代表用户输入的数学表达式),然后使用Python的eval函数来计算该表达式的值。之后,你将计算结果转换为字符串,并使用result_num.set()方法更新StringVar的值,这将自动更新与result_num关联的Tkinter部件(如Label)的文本。

def button(x):
    print('X:\t', x)
    result_num.set(result_num.get() + x)

定义了一个名为 button 的函数,它接受一个参数 x。'X:\t' 是一个字符串,其中 \t 是一个制表符(tab),用于在输出中插入一个制表位,以便清晰地显示 x 的值。+ x:将当前从按钮获取的值 x 附加(拼接)到现有字符串的末尾。

result_num.set(...):使用更新后的字符串值来设置 StringVar 对象 result_num 的值。这会自动更新与 result_num 关联的 Tkinter 部件(如 Entry 控件)的显示内容。

Clear方法将lambl设置为空

Back方法将lambl设置为字符串的上一位

标签:python,height,---,num,grid,result,计算器,root,row
From: https://blog.csdn.net/2302_81279069/article/details/139869754

相关文章

  • python---学生通讯录
    代码:importcsvstudents=[]defmenu():    print("学生信息管理")    print("1.显示学生信息")    print("2.添加学生信息")    print("3.删除学生信息")    print("4.保存学生信息")    print("5.退出")defadd():    student={}    ......
  • 2024年华为OD机试真题-分披萨-(C++/Java/python)-OD统一考试(C卷D卷)
    题目描述"吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从"吃货"开始,轮流......
  • 14-vertical-aligin
    01行盒的理解作用:将当前行里的所有内容包裹起来<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docu......
  • 【图像分割】使用快速模糊 c-means clusering 进行图像分割(Matlab实现)
    “在代码的海洋里,有无尽的知识等待你去发现。我就是那艘领航的船,带你乘风破浪,驶向代码的彼岸。 ......
  • 【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)
     ......
  • 高项-采购管理知识要点
    1、项目采购管理包括三个过程(默写):规划采购管理、实施采购、控制采购。(1)规划采购管理:记录项目决策、明确采购方法及识别潜在卖方的过程。输出:采购管理计划、采购策略、采购工作说明书、供方选择标准、自制/外购决策、招标文件、独立成本估算(2)实施采购:获取卖方应......
  • day11 - 集合+学生管理系统(黑马程序员)
    目录1.ArrayList1.1ArrayList类概述1.2ArrayList类常用方法1.2.1构造方法1.2.2成员方法1.2.3示例代码1.3ArrayList存储字符串并遍历1.3.1案例需求1.3.2代码实现1.4ArrayList存储整数并遍历1.4.1案例需求1.4.2代码实现​1.5 ArrayList存储学生对象并遍......
  • day10 - 字符串
    目录1.API1.1API概述1.2如何使用API帮助文档2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1==号的作用2.5.2equals方法的作用2.6用户登录案例2.6.1案例需求2.6.2代码实现2.7遍......
  • 金控风控:Python实现基于数据技巧的拒绝推断
    常说的拒绝推断(Inferencemethods),通常是指通过数据分析方法修正模型的参数估计偏差。拒绝推断的主要意义是希望修正建模样本和实际全量样本之间的差异,本质上是为了降低模型参数估计的偏差。拒绝推断场景下有如下三个概念。已知好坏标签(KnowGoodBad,KGB)样本:准入模型允许通过......
  • C++系统相关操作1 - 调用命令行并获取返回值
    1.关键词2.sysutil.h3.sysutil.cpp3.1.system_util_unix.cpp3.2.system_util_win.cpp4.测试代码5.运行结果6.源码地址1.关键词关键词:C++系统调用systempopen跨平台应用场景:希望直接调用操作系统的某些命令,并获取命令的返回值。2.sysutil.h#pragm......