利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))
上次使用 Chatgpt 寫爬蟲(chóng),雖然寫出來(lái)的代碼很多需要修改后才能運(yùn)行,但Chatgpt提供的思路和框架都是沒(méi)問(wèn)題。
這次讓 Chatgpt 寫一寫GUI程序,也就是你??吹降淖烂鎴D形程序。
由于第一次測(cè)試,就來(lái)個(gè)簡(jiǎn)單點(diǎn)的,用Python寫用來(lái)加減乘除的計(jì)算器。
提問(wèn):請(qǐng)用Python寫一個(gè)計(jì)算器GUI程序

(代碼過(guò)長(zhǎng),就不完全展示了)
它告訴我,可以使用Python的tkinter庫(kù)來(lái)實(shí)現(xiàn)簡(jiǎn)單的GUI,這確實(shí)是最快捷的方法。
代碼執(zhí)行出來(lái)是一個(gè)很簡(jiǎn)答的計(jì)算器程序,沒(méi)有什么UI設(shè)計(jì)可言。

用起來(lái)也沒(méi)什么毛病,但似乎外觀上應(yīng)該更好看點(diǎn)。
iPhone手機(jī)的計(jì)算器APP是集美貌、簡(jiǎn)潔、方便、功效于一體的計(jì)算器代表作。

于是我問(wèn):幫我優(yōu)化下這個(gè)計(jì)算器的UI界面 類似iphone計(jì)算器風(fēng)格。
ChatGPT:

這次代碼居然沒(méi)有完整展現(xiàn)出來(lái),Chatgpt生成到一半自動(dòng)斷了,也不知道什么原因。
我又問(wèn)它:請(qǐng)寫完后半部分。
ChatGPT:

最后它補(bǔ)充道
這段代碼實(shí)現(xiàn)了以下功能:
1、創(chuàng)建計(jì)算器 GUI 的主要界面,包括數(shù)字按鈕和文本框;
2、對(duì)數(shù)字按鈕和運(yùn)算符按鈕的點(diǎn)擊事件進(jìn)行響應(yīng),完成對(duì)方程的修改、計(jì)算和清空等操作;
3、實(shí)現(xiàn)了基本的錯(cuò)誤處理功能。
你可以將這段代碼保存為 calculator.py,并在命令行中運(yùn)行它,即可啟動(dòng)這個(gè)計(jì)算器 GUI 程序。
經(jīng)過(guò)優(yōu)化后的代碼,UI確實(shí)好看多了,類似iPhone計(jì)算器的風(fēng)格,但美感上還差很多,功能也比較簡(jiǎn)單。

附上完整代碼(來(lái)自Chatgpt):
import tkinter as tk
from tkinter import font
class Calculator:
def __init__(self, master):
self.master = master
master.title("Calculator")
master.geometry("350x560")
master.resizable(width=False, height=False)
# 設(shè)置按鈕和文本框字體
self.button_font = font.Font(size=20)
self.equation_font = font.Font(size=30)
# 創(chuàng)建顯示方程的文本框
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)
# 創(chuàng)建數(shù)字按鈕
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):
# 創(chuàng)建按鈕
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) / 100
self.equation.delete(0, tk.END)
self.equation.insert(0, result)
except ValueError:
pass
elif 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)
# 創(chuàng)建主窗口
root = tk.Tk()
# 創(chuàng)建計(jì)算器 GUI
calculator = Calculator(root)
# 進(jìn)入主事件循環(huán)
root.mainloop()
這段代碼還有很多值得修改的地方,如果你有興趣可以試試。
到此這篇關(guān)于利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))的文章就介紹到這了,更多相關(guān)Python Chatgpt計(jì)算器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Flask Migrate模塊遷移數(shù)據(jù)庫(kù)
Flask-Migrate是一個(gè)為Flask應(yīng)用處理SQLAlchemy數(shù)據(jù)庫(kù)遷移的擴(kuò)展,使得可以通過(guò)Flask的命令行接口或者Flask-Scripts對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作2022-07-07
動(dòng)態(tài)創(chuàng)建類實(shí)例代碼
Python中要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,要首先導(dǎo)入該類或者該類所屬的模塊。2009-10-10
基于Python實(shí)現(xiàn)視頻分辨率轉(zhuǎn)換
這篇文章主要介紹了基于Python實(shí)現(xiàn)視頻的分辨率轉(zhuǎn)換的示例代碼,文中的代碼講解詳細(xì),對(duì)學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以了解一下2021-12-12
Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
python 中[0]*2與0*2的區(qū)別說(shuō)明
這篇文章主要介紹了python 中[0]*2與0*2的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
Python數(shù)學(xué)建模StatsModels統(tǒng)計(jì)回歸可視化示例詳解
圖形總是比數(shù)據(jù)更加醒目、直觀。解決統(tǒng)計(jì)回歸問(wèn)題,無(wú)論在分析問(wèn)題的過(guò)程中,還是在結(jié)果的呈現(xiàn)和發(fā)表時(shí),都需要可視化工具的幫助和支持2021-10-10
基于Python實(shí)現(xiàn)自動(dòng)用小寫字母替換文件后綴的大寫字母
本文介紹基于Python語(yǔ)言,基于一個(gè)大文件夾,遍歷其中的多個(gè)子文件夾,對(duì)于每一個(gè)子文件夾中的大量文件,批量將其文件的名稱或后綴名中的字母由大寫修改為小寫的方法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-04-04

