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.hqwc.cn/news/700385.html

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

相关文章

FreeRTOS【4】线程挂起和恢复

1.开发背景 基于上一篇指引,成功创建并启动线程后,线程已经开始运行了,但是有时我们需要线程暂停运行,例如某个线程是控制 LED 闪灯的,如果现在需要让 LED 停止工作,单纯的关闭 LED 是没用的,因…

NSSCTF Web方向的例题和相关知识点(二)

[SWPUCTF 2021 新生赛]Do_you_know_http 解题: 点击打开环境,是 提示说请使用wLLm浏览器访问 我们可以更改浏览器信息,在burp重放器中发包后发现是302重定向,但是提示说success成功,说明 我们修改是成功的&#xff…

【AI学习】聊两句昨夜OpenAI的GPT-4o

蹭个热点,聊两句昨夜的大事件——OpenAI发布GPT-4o,我看到和想到的一点东西。 首先是端到端方法,前面关于深度学习的文章,对端到端的重要性做了一些学习,对端到端这个概念有了一些理解。正如Richard Sutton在《苦涩的…

【C++】内联函数、auto、范围for

文章目录 1.内联函数2.auto关键字2.1auto简介2.2auto的注意事项2.3auto不能推导的场景 3.基于范围的for循环(C11)4.指针空值nullptr(C11) 1.内联函数 概念: 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函…

学习神经网络基础架构

今日学习了解了常见的几种神经网络基础架构。 1.卷积神经网络 卷积神经网络CNN是一种人工神经网络,旨在处理和分析具有网格状拓扑结构的数据,如图像和视频。将 CNN 想象成一个多层过滤器,可处理图像以提取有意义的特征并进行推理预测。 想…

【软件测试】自动化测试 Selenium 篇(一)

一、什么是自动化测试 1、自动化测试介绍 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化就相当于将人工测试手段进行转换…

分区恢复:恢复已删除/丢失的硬盘分区数据方法

通常情况下,如果分区正常,您可以直接在Windows资源管理器中看到并访问它。如果启动计算机时在Windows资源管理器中看不到某个分区,则该分区可能会丢失。将有一些解决方案可以帮助您修复和恢复已删除或丢失的硬盘驱动器分区,或从丢…

《一》Word文字编辑软件---架构设计分析

1,简单介绍 今天,我们来模拟offic软件中的word文档,运行如图: 运行程序后会出现主界面,顶端的菜单栏包括“文件”“编辑”“格式”“窗口”和“帮助五个主菜单。 菜单栏下面是工具栏,包含了系统常用的功能按…

2022-1990年 各省碳排放Co2数据集(含数据及参考文献)

碳排放是指人类活动产生的二氧化碳(CO2)等温室气体释放到大气中的过程。通过划分排放源的范围以避免重复计算的思想,由世界资源研究所在关于企业温室气体排放清单编制的指南中首次提出。城市碳排放核算边界界定借鉴该思想,可分为3…

5.12.1 Detecting and classifying lesions in mammograms with Deep Learning

计算机辅助检测 (CAD) 系统的开发是为了帮助放射科医生分析筛查性乳房 X 光检查,深度 CNN 有可能彻底改变医学图像分析。我们提出了一种基于最成功的对象检测框架之一 Faster R-CNN 的 CAD 系统。该系统无需任何人为干预即可检测乳房 X 光照片上的恶性或良性病变并对…

ollama离线部署llama3(window系统)

首先介绍下ollama是什么?Ollama是一个开源的大型语言模型服务工具,旨在为用户提供本地化的运行环境,满足个性化的需求。具体来说,Ollama是一个功能强大的开源框架,可以简化在Docker容器中部署和管理大型语言模型&a…

nestJs中跨库查询

app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下