当前位置: 首页 > news >正文

Tkinter Frame布局笔记--做一个简易的计算器

#encoding=utf-8
import tkinter
import re
import tkinter.messagebox
import tkinter.simpledialog
import sys
import os
def get_resources_path(relative_path):if getattr(sys,'frozen', False):base_path=sys._MEIPASS#获取临时文件else:base_path=os.path.dirname(".")return os.path.join(base_path,relative_path)
Logopath=get_resources_path(os.path.join("resources",'heart.ico'))
startpath=get_resources_path(os.path.join("resources",'3.png'))
circlepath=get_resources_path(os.path.join("resources",'4.png'))
duopath=get_resources_path(os.path.join("resources",'5.png'))
class MainForm:#定义窗体类def __init__(self):self.root=tkinter.Tk()#创建一个窗体self.root.title("Katetesting")#设置标题self.root.iconbitmap(Logopath)self.root.geometry("231x280")self.root.maxsize(1000,1000)self.root["background"]="#312432"self.input_frame()self.button_frame()self.root.mainloop()#显示窗体def input_frame(self):self.input_frame=tkinter.Frame(self.root,width=20)self.content=tkinter.StringVar()#此时不是多行输入是单行输入,所以使用Entry组件self.entry=tkinter.Entry(self.input_frame,width=14,font=("微软雅黑",20),textvariable=self.content)self.entry.pack(fill="x",expand=1)self.clean=False#清除标记,每一次计算完成之后清除self.input_frame.pack(side="top")def button_frame(self):self.button_frame=tkinter.Frame(self.root,width=8)self.button_list=[[],[],[],[]]#定义了一个4组组件self.button_list[0].append(tkinter.Button(self.button_frame,text="1",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[0].append(tkinter.Button(self.button_frame,text="2",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[0].append(tkinter.Button(self.button_frame,text="3",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[0].append(tkinter.Button(self.button_frame,text="+",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[1].append(tkinter.Button(self.button_frame,text="4",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[1].append(tkinter.Button(self.button_frame,text="5",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[1].append(tkinter.Button(self.button_frame,text="6",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[1].append(tkinter.Button(self.button_frame,text="-",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[2].append(tkinter.Button(self.button_frame,text="7",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[2].append(tkinter.Button(self.button_frame,text="8",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[2].append(tkinter.Button(self.button_frame,text="9",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[2].append(tkinter.Button(self.button_frame,text="*",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[3].append(tkinter.Button(self.button_frame,text="0",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[3].append(tkinter.Button(self.button_frame,text=".",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[3].append(tkinter.Button(self.button_frame,text="=",fg="black",width=3,font=("微软雅黑",'20')))self.button_list[3].append(tkinter.Button(self.button_frame,text="/",fg="black",width=3,font=("微软雅黑",'20')))self.row=0#进行行数的控制for group in self.button_list:self.column=0#进行列的控制for button in group:button.bind("<Button-1>",lambda event:self.button_handle(event))#绑定事件button.grid(row=self.row,column=self.column)self.column+=1self.row+=1self.button_frame.pack(side="bottom")def button_handle(self,event):oper=event.widget["text"]if self.clean:#第二次计算self.content.set("")self.clean=False#留给下一次计算输入if oper!="=":self.entry.insert("end",oper)elif oper =="=":#执行运算result=0#保存程序的计算结果exp=self.entry.get()print(exp)pattern=r"\+|\-|\*|\\"nums=re.split(pattern,exp)print(nums)flag=re.findall(pattern,exp)[0]if flag=="+":result=float(nums[0])+float(nums[1])elif flag=="-":result = float(nums[0]) - float(nums[1])elif flag=="*":result = float(nums[0]) * float(nums[1])elif flag==r"/":result = float(nums[0]) / float(nums[1])self.entry.insert("end","=%s"%result)self.clean=Truedef main():MainForm()
if __name__=="__main__":main()

相关文章:

Tkinter Frame布局笔记--做一个简易的计算器

#encodingutf-8 import tkinter import re import tkinter.messagebox import tkinter.simpledialog import sys import os def get_resources_path(relative_path):if getattr(sys,frozen, False):base_pathsys._MEIPASS#获取临时文件else:base_pathos.path.dirname(".&q…...

算法专题八: 链表

目录 链表1. 链表的常用技巧和操作总结2. 两数相加3. 两两交换链表中的节点4. 重排链表5. 合并K个升序链表6. K个一组翻转链表 链表 1. 链表的常用技巧和操作总结 常用技巧 画图!!! 更加直观形象, 便于我们理解引入虚拟头节点, 方便我们对链表的操作, 减少我们对边界情况的考…...

MySQL中关于NULL值的六大坑!你被坑过吗?

NULL值是我们在开发过程中的老朋友了&#xff0c;但是这个老朋友在MySQL中有很多坑&#xff0c;我通过这篇文章来总结分享一下&#xff0c;欢迎大家在评论区分享你的看法和踩坑经历。 1、NULL不等于NULL 在MySQL中&#xff0c;执行以下SQL会返回NULL 假如t表有以下数据&#…...

学生学习动机测试:激发潜能,引领未来

学习动机、学习兴趣和学习目标制定是影响学生学习成效的三个关键因素。通过对学生学习动机的测试,我们可以深入了解学生的学习状态,进而采取针对性的措施,激发他们的学习潜能,引导他们走向更加光明的未来。本文将从学习动机、学习兴趣和学习目标制定三个方面,详细探讨学生…...

基于SSM党务政务服务热线管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;部门管理&#xff0c;办事信息管理&#xff0c;信息记录管理&#xff0c;系统管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;部门&#xff0c;信息…...

OSI参考模型详解:初学者指南与实践案例

OSI参考模型详解&#xff1a;初学者指南与实践案例 OSI&#xff08;Open System Interconnect&#xff09;参考模型是一个由国际标准化组织&#xff08;ISO&#xff09;提出的七层网络分层模型&#xff0c;它为全球所有互联计算机系统提供了一个通用的通信框架&#xff0c;解决…...

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信 TCP 通信为面向连接的通信&#xff0c;需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信&#xff0c;在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) &#xff0c;在 S7-200 SMART 调用 Open User Communication …...

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解&#xff1a;用于处理multipart/form-data请求的一部分&#xff0c;通常用于文件上传或者处理表单中的字段。 java后端举例&#xff1a; PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…...

深度学习基础知识-02 数据预处理

深度学习的数据预处理通常包括&#xff1a; 1.数据清洗&#xff1a;去除错误或不完整的数据。 2.归一化&#xff1a;调整数据范围&#xff0c;如将像素值缩放到0-1。 3.数据增强&#xff1a;通过旋转、缩放等方法增加数据多样性。 4.数据划分&#xff1a;将数据分为训练集、验证…...

【CTF刷题9】2024.10.19

[MoeCTF 2021]babyRCE 考点&#xff1a;关键词过滤&#xff08;绕过方法参考往期博客&#xff09; 来源&#xff1a;nssctf <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\&g…...

WPF中的Setter

在 WPF (Windows Presentation Foundation) 中&#xff0c;Setter 是一个定义控件属性值的标记&#xff0c;通常用在 Style 或 Template 中。Setter 用于指定当某些条件满足时&#xff0c;控件的属性应该如何设置。以下是 Setter 的一些关键点&#xff1a; 属性设置&#xff1a…...

RabbitMQ下载与配置

安装Erlang Erlang 下载地址如下&#xff1a; https://erlang.org/download/otp_versions_tree.html 安装 RabbitMQ RabbitMQ 下载地址如下&#xff1a; https://www.rabbitmq.com/install-windows.html 查看服务&#xff0c;服务已经正常启动 打开Command Prompt 输入rabb…...

【数据结构与算法】力扣 54. 螺旋矩阵

问题描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a; [1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a; ma…...

速通不了的人工智能

下面是一个详细且系统的人工智能学习框架,涵盖了从基础理论到实际应用的各个方面。这个框架包括理论学习、编程实践、项目实战和资源推荐。为了帮助你更好地理解和应用,我会提供一些具体的代码示例。 人工智能学习框架 1. 基础理论 1.1 数学基础 线性代数:向量、矩阵、特…...

微信新功能上线,找工作也能“附近”搞定

大家好&#xff0c;我是小悟 你们听说了吗&#xff1f;微信又双叒叕出新功能啦&#xff01;这次可不是什么微整形、小游戏之类的小打小闹&#xff0c;而是实实在在的大招——查找附近的工作&#xff01;没错&#xff0c;你没听错&#xff0c;就是那个在你家门口就能找到工作的…...

CANoe与C#联合仿真方案

引言 CANoe作为一款强大的网络仿真工具,能够模拟各种通信协议,尤其是在汽车领域的CAN、LIN、Ethernet等协议。而C#作为一种广泛使用的编程语言,能够为CANoe提供灵活的用户界面和逻辑控制。本文将探讨如何将CANoe与C#结合,实现高效的联合仿真方案。 1. 系统架构 联合仿真…...

公交信息在线查询系统|基于java和小程序的公交信息在线查询系统小程序设计与实现(源码+数据库+文档)

公交信息在线查询系统小程序 目录 基于java和小程序的公交信息在线查询系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂…...

[LeetCode] 1162. 地图分析

题目描述&#xff1a; 你现在手里有一份大小为 n x n 的 网格 grid&#xff0c;上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地。 请你找出一个海洋单元格&#xff0c;这个海洋单元格到离它最近的陆地单元格的距离是最大的&#xff0c;并返…...

CentOS 上安装 MySQL(附卸载教程)

在 CentOS 上安装 MySQL 5.7&#xff1a; 1. 添加 MySQL Yum 存储库 首先&#xff0c;确保你已添加 MySQL Yum 存储库。因为你已经安装了 mysql57-community-release-el7-11.noarch&#xff0c;如果需要重新添加&#xff0c;可以使用以下命令&#xff1a; sudo yum localins…...

如何在Matlab界面中添加日期选择器?

在Matlab界面中添加日期选择器&#xff0c;可以让用户通过图形界面方便地选择日期。Matlab提供了uidatepicker函数&#xff0c;允许用户在App Designer设计的GUI中添加日期选择器组件。以下是如何在Matlab界面中添加日期选择器的详细步骤&#xff1a; 1. 使用App Designer添加…...

WarcraftHelper终极指南:魔兽争霸3现代电脑完整兼容性修复方案

WarcraftHelper终极指南&#xff1a;魔兽争霸3现代电脑完整兼容性修复方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代电脑…...

隐式神经表示在计算机视觉中的5个关键应用:图像超分辨率到3D场景重建

隐式神经表示在计算机视觉中的5个关键应用&#xff1a;图像超分辨率到3D场景重建 【免费下载链接】awesome-implicit-representations A curated list of resources on implicit neural representations. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-implicit-repr…...

安卓画廊管理工具:EhViewer开源应用全解析

安卓画廊管理工具&#xff1a;EhViewer开源应用全解析 【免费下载链接】EhViewer &#x1f965; A fork of EhViewer, feature requests are not accepted. Forked from https://gitlab.com/NekoInverter/EhViewer 项目地址: https://gitcode.com/GitHub_Trending/ehvi/EhVie…...

5个核心概念理解上下文工程:从Prompt Engineering到Context Engineering的范式转移

5个核心概念理解上下文工程&#xff1a;从Prompt Engineering到Context Engineering的范式转移 【免费下载链接】Awesome-Context-Engineering &#x1f525; Comprehensive survey on Context Engineering: from prompt engineering to production-grade AI systems. hundred…...

7个高效技巧:用FanControl实现智能风扇精准控制

7个高效技巧&#xff1a;用FanControl实现智能风扇精准控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCo…...

动画测试与调试完全手册:animation-samples项目中的自动化测试实践

动画测试与调试完全手册&#xff1a;animation-samples项目中的自动化测试实践 【免费下载链接】animation-samples Multiple samples showing the best practices in animation on Android. 项目地址: https://gitcode.com/gh_mirrors/an/animation-samples animation-…...

一文带您全面认识 Hadoop 框架与三大核心组件(HDFS、MapReduce、YARN)

一文带您全面认识 Hadoop 框架与三大核心组件&#xff08;HDFS、MapReduce、YARN&#xff09; &#x1f537;博主介绍 致力于网络安全&#xff08;漏洞挖掘、攻防实战&#xff09;、Linux 内核系统&#xff08;底层原理与性能调优&#xff09;、区块链技术&#xff08;Web3 安全…...

10分钟掌握DVWA-Chinese:中文Web安全实战平台完全指南

10分钟掌握DVWA-Chinese&#xff1a;中文Web安全实战平台完全指南 【免费下载链接】DVWA-Chinese DVWA全汉化版本 项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese 你是否想学习网络安全&#xff0c;却被复杂的英文界面和术语吓退&#xff1f;DVWA-Chinese&a…...

如何永久保存微信聊天记录:WeChatMsg免费工具完全指南

如何永久保存微信聊天记录&#xff1a;WeChatMsg免费工具完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

无限视距:突破视野边界的内存调控技术解析

无限视距&#xff1a;突破视野边界的内存调控技术解析 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 副标题&#xff1a;提升37%战场信息获取效率的MOBA游戏增强方案 价值定位&#xff…...