ChatGPT_GUI-Python
import openai
import tkinter as tk
from tkinter import messagebox
import requests
from bs4 import BeautifulSoup
import urllib.request
from tqdm import tqdm
import sys
import webbrowser
# 你的 OpenAI API 密钥
your_api_key = "你的API"
# 服务器上的版本信息页面
server_version_url = "https://pychat.ksmlc.cn/index.html"
server_update_url = "https://pychat.ksmlc.cn/exe/ai.exe"
Current_Version = 1.1
# 获取服务器上的最新版本
try:
response = requests.get(server_version_url)
# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 假设版本信息在 HTML 页面的某个元素中,例如 <span id="version">1.1</span>
version_element = soup.find('span', {'id': 'version'})
if version_element:
latest_version = version_element.text
else:
latest_version = None
except requests.RequestException as e:
messagebox.showerror("错误", f"无法获取最新版本:{e}")
latest_version = None # 不设置默认版本号,保持 latest_version 为 None
print(f"当前客户端的版本号:{Current_Version}")
print(f"服务器上的最新版本号:{latest_version}")
# 如果需要更新
if latest_version is not None and float(latest_version) > Current_Version:
# 提示用户更新
user_response = messagebox.askyesno("更新", f"发现新版本 {latest_version},是否更新?")
if user_response:
# 下载并安装更新
try:
# 获取更新文件的URL
update_url = "https://pychat.ksmlc.cn/exe/ai.exe"
# 下载更新文件
with urllib.request.urlopen(update_url) as response, \
open(f"KS-MLC_ChatGPT_{latest_version}.exe", 'wb') as out_file:
# 获取文件大小
file_size = int(response.info().get('Content-Length', -1))
# 初始化 tqdm 进度条
progress = tqdm(total=file_size, unit='B', unit_scale=True, unit_divisor=1024)
# 下载文件并显示进度
while True:
data = response.read(1024)
if not data:
break
out_file.write(data)
progress.update(len(data))
progress.close() # 关闭进度条
# 提示用户更新已成功下载
messagebox.showinfo("下载成功", "更新文件已成功下载。")
# 在这里可以添加安装更新的逻辑,例如替换当前的应用程序文件
# 提示用户更新已成功安装
messagebox.showinfo("更新成功", f"在当前目录下会生成KS-MLC_ChatGPT_{latest_version}.exe文件,这个文件就是最新版本,可以把之前版本替换掉。")
except Exception as e:
messagebox.showerror("更新失败", f"无法下载或安装更新:{e}")
# 强制退出程序
sys.exit()
else:
# 用户选择不更新的情况
messagebox.showinfo("取消更新", "用户选择不更新,当前版本未受影响。")
# 强制退出程序
sys.exit()
else:
# 没有更新的情况
messagebox.showinfo("无更新", "当前版本已经是最新版本。")
# 创建主窗口
root = tk.Tk()
root.title("ChatGPT GUI")
# 创建标签和输入框(API密钥)
api_key_label = tk.Label(root, text="请输入您的OpenAI API密钥:")
api_key_label.pack(pady=5)
api_key_entry = tk.Entry(root, show="*", width=50)
api_key_entry.pack(pady=10)
# 创建标签和输入框(问题)
question_label = tk.Label(root, text="请输入您的问题:")
question_label.pack(pady=5)
question_entry = tk.Entry(root, width=50)
question_entry.pack(pady=10)
# 创建标签和输入框(密码)
password_label = tk.Label(root, text="请输入密码以自动填写API密钥:")
password_label.pack(pady=5)
password_entry = tk.Entry(root, show="*", width=50)
password_entry.pack(pady=10)
# 创建文本框,用于显示回答
output_text = tk.Text(root, height=10, width=70, wrap=tk.WORD)
output_text.pack(pady=10)
# 定义获取回答的函数
def get_response():
# 获取用户输入的问题和 API 密钥
user_question = question_entry.get()
user_api_key = api_key_entry.get()
if user_api_key:
# 用户手动填写了 API 密钥
openai.api_key = user_api_key
else:
messagebox.showwarning("警告", "请手动填写API密钥!")
return
if user_question:
# 向 OpenAI 发起请求
response = openai.Completion.create(
engine="text-davinci-003",
prompt=f"用户: {user_question}\n",
max_tokens=100
)
# 获取回答
answer = response.choices[0].text.strip()
# 在文本框中显示回答
output_text.tag_configure("user", foreground="blue")
output_text.tag_configure("gpt", foreground="green")
output_text.config(state=tk.NORMAL)
output_text.insert(tk.END, f"用户: {user_question}\n", "user")
output_text.insert(tk.END, f"GPT: {answer}\n\n", "gpt")
output_text.config(state=tk.DISABLED)
output_text.see(tk.END) # 滚动到文本框底部,显示最新的回答
else:
messagebox.showwarning("警告", "请填写问题!")
# 创建按钮(获取回答)
button = tk.Button(root, text="获取回答", command=get_response)
button.pack(pady=10)
# 定义函数(自动填充 API 密钥)
def fill_api_key():
password = password_entry.get()
if password == "你设置的密码":
# 密码正确,尝试自动填写 API 密钥
api_key_entry.delete(0, tk.END) # 清空原有的内容
api_key_entry.insert(0, your_api_key) # 自动填写 API 密钥
password_entry.delete(0, tk.END) # 清空密码输入框
else:
# 密码不正确,清空 API 密钥输入框
api_key_entry.delete(0, tk.END)
messagebox.showwarning("警告", "密码不正确,请手动填写API密钥!")
# 创建按钮(自动填充 API 密钥)
fill_api_key_button = tk.Button(root, text="自动填充API密钥", command=fill_api_key)
fill_api_key_button.pack(pady=10)
# 创建按钮(打开个人网站)
def open_personal_website():
webbrowser.open("https://ksmlc.cn") # 替换为你的个人网站URL
open_website_button = tk.Button(root, text="打开开发者的网站", command=open_personal_website)
open_website_button.pack(pady=10)
# 运行主循环
root.mainloop()
验证版本html填写
<p>当前版本: <span id="version">1.1</span></p>
<p>最新版本: <span id="latest_version">1.2</span></p>
© 版权声明
- 本站永久网址:https://blog.ksmlc.cn/
- 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
- 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新
- 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ:2760460838进行删除处理
THE END
暂无评论内容