Chatgpt教你使用Python开发iPhone风格计算器

上次使用Chatgpt写爬虫,虽然写出来的代码很多需要修改后才能运行,但Chatgpt提供的思路和框架都是没问题。

这次让Chatgpt写一写GUI程序,也就是你常看到的桌面图形程序。

由于第一次测试,就来个简单点的,用Python写用来加减乘除的计算器。

提问:

请用Python写一个计算器GUI程序

ChatGPT:

(代码过长,就不完全展示了)

它告诉我,可以使用Python的tkinter库来实现简单的GUI,这确实是最快捷的方法。

代码执行出来是一个很简答的计算器程序,没有什么UI设计可言。

用起来也没什么毛病,但似乎外观上应该更好看点。

iPhone手机的计算器APP是集美貌、简洁、方便、功效于一体的计算器代表作。

于是我问:

帮我优化下这个计算器的UI界面 类似iphone计算器风格。

ChatGPT:

这次代码居然没有完整展现出来,Chatgpt生成到一半自动断了,也不知道什么原因。

我又问它:

请写完后半部分。

ChatGPT:

最后它补充道,

这段代码实现了以下功能:1、创建计算器 GUI 的主要界面,包括数字按钮和文本框;
2、对数字按钮和运算符按钮的点击事件进行响应,完成对方程的修改、计算和清空等操作;
3、实现了基本的错误处理功能。你可以将这段代码保存为 calculator.py,并在命令行中运行它,即可启动这个计算器 GUI 程序。

经过优化后的代码,UI确实好看多了,类似iPhone计算器的风格,但美感上还差很多,功能也比较简单。

附上完整代码:

import tkinter as tk
from tkinter import fontclass Calculator:def __init__(self, master):self.master = mastermaster.title("Calculator")master.geometry("350x560")master.resizable(width=False, height=False)# 设置按钮和文本框字体self.button_font = font.Font(size=20)self.equation_font = font.Font(size=30)# 创建显示方程的文本框self.equation = tk.Entry(master, width=12, font=self.equation_font, borderwidth=0, justify=tk.RIGHT)self.equation.grid(row=0, column=0, columnspan=4, padx=10, pady=20, ipady=15)# 创建数字按钮self.create_button("C", 1, 0, bg="white", fg="black", width=4, height=2)self.create_button("±", 1, 1, bg="white", fg="black", width=4, height=2)self.create_button("%", 1, 2, bg="white", fg="black", width=4, height=2)self.create_button("÷", 1, 3, bg="#FF9500", fg="white", width=4, height=2)self.create_button("7", 2, 0, bg="#E4E4E4", fg="black")self.create_button("8", 2, 1, bg="#E4E4E4", fg="black")self.create_button("9", 2, 2, bg="#E4E4E4", fg="black")self.create_button("×", 2, 3, bg="#FF9500", fg="white", width=4, height=2)self.create_button("4", 3, 0, bg="#E4E4E4", fg="black")self.create_button("5", 3, 1, bg="#E4E4E4", fg="black")self.create_button("6", 3, 2, bg="#E4E4E4", fg="black")self.create_button("-", 3, 3, bg="#FF9500", fg="white", width=4, height=2)self.create_button("1", 4, 0, bg="#E4E4E4", fg="black")self.create_button("2", 4, 1, bg="#E4E4E4", fg="black")self.create_button("3", 4, 2, bg="#E4E4E4", fg="black")self.create_button("+", 4, 3, bg="#FF9500", fg="white", width=4, height=2)self.create_button("0", 5, 0, bg="#E4E4E4", fg="black", width=8)self.create_button(".", 5, 2, bg="#E4E4E4", fg="black")self.create_button("=", 5, 3, bg="#FF9500", fg="white", width=4, height=2)def create_button(self, text, row, column, bg="#F0F0F0", fg="black", width=2, height=1):# 创建按钮button = tk.Button(self.master, text=text, bg=bg, fg=fg, width=width, height=height, font=self.button_font,borderwidth=0, command=lambda: self.button_click(text))button.grid(row=row, column=column, padx=5, pady=5, ipady=5, sticky="NSEW")def button_click(self, text):if text == "C":self.equation.delete(0, tk.END)elif text == "±":equation = self.equation.get()if equation.startswith("-"):self.equation.delete(0)self.equation.insert(0, equation[1:])elif equation:self.equation.insert(0, "-")elif text == "%":equation = self.equation.get()try:result = float(equation) / 100self.equation.delete(0, tk.END)self.equation.insert(0, result)except ValueError:passelif text in ["+", "-", "×", "÷"]:if self.equation.get() and not self.equation.get().endswith(("+", "-", "×", "÷")):self.equation.insert(tk.END, text)elif text == ".":if self.equation.get() and "." not in self.equation.get():self.equation.insert(tk.END, ".")elif not self.equation.get():self.equation.insert(tk.END, "0.")elif text == "=":equation = self.equation.get()try:result = eval(equation)self.equation.delete(0, tk.END)self.equation.insert(0, result)except (SyntaxError, ZeroDivisionError):self.equation.delete(0, tk.END)self.equation.insert(0, "Error")else:self.equation.insert(tk.END, text)# 创建主窗口
root = tk.Tk()# 创建计算器 GUI
calculator = Calculator(root)# 进入主事件循环
root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPU Burn测试指导

工具下载链接: https://codeload.github.com/wilicc/gpu-burn/zip/master测试方法: 上传工具到操作系统下,解压缩工具,使用make命令完成编译(确保cuda环境变量已经配置成功、 nvcc -v能显示结果)。 如果安…

文献速递:多模态深度学习在医疗中的应用--多模式婴儿脑分割技术:模糊引导深度学习

Title 题目 Multimodal Infant Brain Segmentation by Fuzzy-informed Deep Learning 多模式婴儿脑分割技术:模糊引导深度学习 01 文献速递介绍 日益普及的非侵入式婴儿脑磁共振图像(MRI)为准确理解脑主要发展轨迹的动态性提供了机会&…

树莓派|串口通信协议

1、串口通信原理 串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。串…

“ModuleNotFoundError: No module named ‘selenium‘”报错如何解决

接上节:测试平台开发之测试框架改造并发执行及结果隔离(1) 上节博客的末尾提到:在命令窗口执行python main.py 可是执行的时候遇到了如下报错: ERRORS _____________________________________________________________ ERROR collecting te…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型: 销售报告:4S店需要定期向总部提交销售报告,包括销售数量、销售额、市场份额等关键指标。 库存管理文件:包括车辆库…

使用docker创建hadoop集群:Couldn‘t upload the file

运行的环境; Windows10 Docker Desktopdocker-hadoop 出现的问题如下: 解决方法 https://github.com/big-data-europe/docker-hadoop/issues/98

Unity Pixels Per Unit 与 Sprite Renderer Scale的逻辑关系,为什么平铺的Sprite Renderer会变形?

SpriteRenderer之前用的比较基础,没遇到过什么问题,这几天使用SpriteRenderer的平铺时发现平铺变形了,研究了一下,原来有这么多在逻辑在里面。 当我们导入图片选择Texture Type为Sprite时表示我们的图片用途是UI或者SpriteRendere…

【go项目01_学习记录12】

代码组织 1 代码结构2 重构与测试2.1 安装测试功能2.2 testify 的常用断言函数 3 表组测试 1 代码结构 所有的代码写在一个main.go文件里面,GO编译器也是可以正常执行的。但是当代码量很庞大时,很难进行维护。 Go Web 程序的代码组织 单文件——反模式…

C语言笔记15

指针2 1.数组名的理解 int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p &arr[ 0 ];17391692786 arr是数组名&#xff0c;数组名是首元素地址&#xff0c;&arr[0]就是取出首元素的地址放在指针变量p中。 #include <stdio.h> int main()…

基于GWO灰狼优化的CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 GRU网络 4.3 注意力机制&#xff08;Attention&#xff09; 4.4 GWO优化 5.算法完整程序工程 1.算法运行效果图预览…

ChatGlm的部署和训练

一、chatGlm的环境部署 1.安装anocoda 下载安装anaconda。具体教程详见官网教程。 2.安装CUDA 1&#xff09;首先在终端查看你的Nividian版本&#xff0c;命令如下&#xff1a; 2)如果你没有下载你要去下载cuda下载网站&#xff0c;这里是12.3是因为我cuda version版本12…

【保姆级】生成式网络模型基础知识(图像合成/语音合成/GPT)

生成式模型基础知识 初步接触生成任务 生成任务&#xff0c;顾名思义就是要去生成一个东西&#xff0c;比如生成图片/音频/文字等等。 大家接触最多比如chatGPT、stable diffusion、还有一些语音合成相关的东西。 那么问题来了&#xff0c;具体生成步骤是什么样的&#xff…

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

ChatGPT-4o发布了,所有人都可以免费用

前言 美国时间 5 月 13 日&#xff0c;在 Sam Altman 缺席的情况下&#xff08;为什么缺席&#xff0c;猜测是可能后面还有更重磅的消息&#xff0c;这次的产品只是一个中间过渡产品&#xff09;&#xff0c;OpenAI CTO Mira Murati 介绍了新的 ChatGPT 产品 ChatGPT-4o。这个…

node安装以及node的包管理工具

node安装以及node的包管理工具 node安装nvm管理工具 node安装 1、下载node链接: 点击这里 2、选择需要下载的版本以及对应的系统版本 nvm管理工具 1、下载nvm链接: 点击这里 2、双击运行.exe文件 全部默认安装即可 3、nvm常用命令 nvm list avaliable 显示所有可以下载的n…

企业管理咨询公司不会选?一文带你避开“坑人”陷阱

近年来&#xff0c;企业管理咨询公司如雨后春笋般涌现&#xff0c;数量之多令人眼花缭乱。所以&#xff0c;面对这么多的企业管理咨询公司&#xff0c;企业该选谁&#xff1f;又该如何选择&#xff1f;本文将从以下几个方面为大家解析。 首先&#xff0c;我们要明确自己的需求和…

R语言:ROC分析

> install.packages("pROC") > library(pROC) > inputFile"结果.txt" > rtread.table(inputFile, headerT, sep"\t", check.namesF, row.names1) > head(rt) con treat TCGA-E2-A1L7-11A-con…

【论文速读】|大语言模型是零样本模糊测试器:通过大语言模型对深度学习库进行模糊测试

本次分享论文&#xff1a;Large Language Models are Zero-Shot Fuzzers: Fuzzing Deep-Learning Libraries via Large Language Models 基本信息 原文作者&#xff1a;Yinlin Deng, Chunqiu Steven Xia, Haoran Peng, Chenyuan Yang, Lingming Zhang 作者单位&#xff1a;U…

vue+vant项目0-1快速发布到--钉钉应用

uniapp开发笔记----vue开发项目配置钉钉应用 一、 vuevant开发项目1. 自定义vuevant项目或者已经有的旧项目1. 自定义vuevant项目1. 创建vue项目2. 安装依赖3. 引入所有组件4. 使用一个组件/效果和代码如下&#xff1a; 2. git官网仓库&#xff0c;直接拉默认dome代码3. 打包项…

CTF如何学习?

CTF如何学习&#xff1f;打CTF有什么用 CTF本身有几个常见的领域 MISC WEB [逆向 密码学](https://www.zhihu.com/search?q逆向 密码学&search_sourceEntity&hybrid_search_sourceEntity&hybrid_search_extra{“sourceType”%3A"answer"%2C"sourc…