聊天机器人

import tkinter as tk
from tkinter import messagebox
import urllib.request
import urllib.parse
import json
import threading

def send_message():
message = entry.get()
if not message:
messagebox.showerror("错误", "请输入一些文字!")
return

url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + urllib.parse.quote(message)

try:
response = urllib.request.urlopen(url)
responses = response.read().decode("utf-8")
response_dict = json.loads(responses)
reply = response_dict["content"]

if "http" in reply:
# 如果回复包含图片链接,则调用图像生成API
generate_image(reply)
else:
# 显示AI回复
result_text.config(state=tk.NORMAL)
result_text.delete(1.0, tk.END)
result_text.insert(tk.END, reply)
result_text.config(state=tk.DISABLED)
except Exception as e:
messagebox.showerror("错误", str(e))

def generate_image(image_url):
# 这里可以调用图像生成API,如上面使用的通义万相API
# 为了简化,这里假设我们直接从给定的URL获取图像
try:
image_data = urllib.request.urlopen(image_url).read()
with open("temp_image.png", "wb") as f:
f.write(image_data)
show_image("temp_image.png")
except Exception as e:
messagebox.showerror("错误", str(e))

def show_image(image_path):
img = tk.PhotoImage(file=image_path)
image_label.config(image=img)
image_label.image = img

root = tk.Tk()
root.title("AI Chat & Image Generator")

frame = tk.Frame(root)
frame.pack(padx=10, pady=10)

entry = tk.Entry(frame, width=50)
entry.pack(side=tk.LEFT)

send_button = tk.Button(frame, text="发送", command=lambda: threading.Thread(target=send_message).start())
send_button.pack(side=tk.LEFT, padx=10)

result_text = tk.Text(root, height=10, state=tk.DISABLED)
result_text.pack(pady=10)

image_label = tk.Label(root)
image_label.pack()

root.mainloop()

posted @ 2024-06-05 09:30  混沌武士丞  阅读(41)  评论(0)    收藏  举报