基于Python制作AI聊天软件的示例代码
作者:晋升阁 发布时间:2023-09-27 14:58:25
标签:Python,AI,聊天
效果图
先看一下效果图
就当是女友无聊的时候自己抽不出时间的小分身吧!
需要用到的库
tkinter、time、urllib、requests
tkinter负责窗体、time显示时间、urllib和requests负责请求
窗体设计
from tkinter import *
win1 = Tk()
win1.geometry('400x644+100+100')
win1.title('xxx男神的AI分身')
Label11 = Label(win1, text='男神白', font=('黑体', 12), anchor='center').place(y=13, x=15, width=380, height=20)
Entry11 = Entry(win1, font=('等线', 11), width = 70)
Entry11.place(y=600, x=15, width=310, height=26)
Button11 = Button(win1, text='发送', font=('等线', 11), command = mecha).place(y=598, x=328, width=65, height=30)
console = Text(win1, font=('等线', 11))
console.place(y=35, x=15, width=368, height=550)
console.insert(1.0,' 欢迎来到你与男神的小天地!\n你可以把你想说的内容输入到下面的输入框哦\n')
console.mark_set('markOne', 1.0)
console.mark_set('markTwo', 3.0)
console.tag_add('tag1', 'markOne', 'markTwo')
console.tag_config('tag1', foreground='red')
win1.bind("<Return>", test_fun)
win1.mainloop()
函数
在txet部件上显示发送时间及颜色处理,使用requests和urllib库来调用接口处理回复你女朋友的信息。
def liaotian():
global b
import time
b = 3
def mecha():
global b
b+=2
console.insert('end',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
console.insert('end',str(Entry11.get())+'\n')
console.mark_set(str(b-1), str(b-1)+'.0')
console.mark_set(str(b), str(b)+'.0')
console.tag_add(str(b), str(b-1), str(b))
console.tag_config(str(b), foreground='blue')
console.see(END)
console.update()
console.insert('end',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
console.insert('end',aicha()+'\n')
console.mark_set(str(b-1), str(b-1)+'.0')
console.mark_set(str(b), str(b)+'.0')
console.tag_add(str(b), str(b-1), str(b))
console.tag_config(str(b), foreground='red')
console.see(END)
Entry11.delete(0,END)
console.update()
def test_fun(self):
mecha()
def aicha():
global b
b+=2
msg = str(Entry11.get())
else:
import urllib
import requests
def qingyunke(msg):
url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))
html = requests.get(url)
return html.json()["content"]
print("原话>>", msg)
res = qingyunke(msg)
res = res.replace('菲菲', '你男神')
res = res.replace('我', '你男神')
print("智能回复>>", res)
return res
为粉丝们额外添加的功能
根据女友输入的内容自定义回复
我自己添加的内容太肉麻的,不太适合分享给你们哈。于是我就给你们做多了一个自定义回复的功能。嘿嘿!那就是独一无二的代码了
坚持着你们直接能使用代码不做任何修改的原则,我就不让你们在代码里面添加了,当你第一次运行此代码的时候会自动创建一个txt文件(甚至还不用让你创建文件),你就可以在txt文件中自定义回复内容了。
使用异常处理模块try来尝试open读取名为“自定义回复.txt”的文件,若不存在except就创建,若已存在直接读取即可。操作读取的字符串逐个添加到zidingyi字典中,判断输入的语句是否在zidingyi.keys()中即可做出相应回复。
添加后的效果图:
zidingyi = {}
try:
with open("自定义回复.txt", "r", encoding='utf8') as f:
asd = f.readlines()
print(asd)
for line in asd:
line = line.strip('\n')
wen, da = line.split(':', 1)
zidingyi[wen] = da
except:
with open("自定义回复.txt", "w+", encoding='utf8') as f:
f.write('提示——>采用“输入:回复”格式 如——>你吃饭了吗?:我吃饭啦 回车以继续下一自定义回复(注意使用英文的冒号)')
with open("自定义回复.txt", "r", encoding='utf8') as f:
asd = f.readlines()
print(asd)
for line in asd[1:]:
line = line.strip('\n')
wen, da = line.split(':', 1)
zidingyi[wen] = da
print(line)
print(zidingyi)
完整代码
from tkinter import *
def liaotian():
global b
import time
b = 3
def mecha():
global b
b += 2
console.insert('end', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
console.insert('end', str(Entry11.get()) + '\n')
console.mark_set(str(b - 1), str(b - 1) + '.0')
console.mark_set(str(b), str(b) + '.0')
console.tag_add(str(b), str(b - 1), str(b))
console.tag_config(str(b), foreground='blue')
console.see(END)
console.update()
console.insert('end', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
console.insert('end', aicha() + '\n')
console.mark_set(str(b - 1), str(b - 1) + '.0')
console.mark_set(str(b), str(b) + '.0')
console.tag_add(str(b), str(b - 1), str(b))
console.tag_config(str(b), foreground='red')
console.see(END)
Entry11.delete(0, END)
console.update()
def test_fun(self):
mecha()
def aicha():
global b
b += 2
msg = str(Entry11.get())
if msg in zidingyi.keys():
res = zidingyi[msg]
return res
else:
import urllib
import requests
def qingyunke(msg):
url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))
html = requests.get(url)
return html.json()["content"]
print("原话>>", msg)
res = qingyunke(msg)
res = res.replace('菲菲', '你男神')
res = res.replace('我', '你男神')
print("智能回复>>", res)
return res
zidingyi = {}
try:
with open("自定义回复.txt", "r", encoding='utf8') as f:
asd = f.readlines()
print(asd)
for line in asd:
line = line.strip('\n')
wen, da = line.split(':', 1)
zidingyi[wen] = da
except:
with open("自定义回复.txt", "w+", encoding='utf8') as f:
f.write('提示——>采用“输入:回复”格式 如——>你吃饭了吗?:我吃饭啦 回车以继续下一自定义回复(注意使用英文的冒号)')
with open("自定义回复.txt", "r", encoding='utf8') as f:
asd = f.readlines()
print(asd)
for line in asd[1:]:
line = line.strip('\n')
wen, da = line.split(':', 1)
zidingyi[wen] = da
print(line)
print(zidingyi)
win1 = Tk()
win1.geometry('400x644+100+100')
win1.title('男神的AI分身')
Label11 = Label(win1, text='你男神', font=('黑体', 12), anchor='center').place(y=13, x=15, width=380, height=20)
Entry11 = Entry(win1, font=('等线', 11), width=70)
Entry11.place(y=600, x=15, width=310, height=26)
Button11 = Button(win1, text='发送', font=('等线', 11), command=mecha).place(y=598, x=328, width=65, height=30)
console = Text(win1, font=('等线', 11))
console.place(y=35, x=15, width=368, height=550)
console.insert(1.0, ' 欢迎来到你与男神的小天地!\n 你可以把你想说的内容输入到下面的输入框哦\n')
console.mark_set('markOne', 1.0)
console.mark_set('markTwo', 3.0)
console.tag_add('tag1', 'markOne', 'markTwo')
console.tag_config('tag1', foreground='red')
win1.bind("<Return>", test_fun)
win1.mainloop()
liaotian()
怎么样,是不是特别简单~快复制去送给你心中的那个女神吧~
来源:https://blog.csdn.net/m0_62814033/article/details/125563506
0
投稿
猜你喜欢
- 自动化测试的脚本运行完成之后,可以生成test report,如果能将result自动的发到邮箱就不用每次打开阅读,而且随着脚本的不段运行,
- 因为有个老Yashica相机机身,前一阵忍不住想配几个标准镜头。到国内购物网站以及摄影器材交流论坛上看了看,发现不仅很少,价格不实在,而且品
- 选择最实用来谈一下首先,你要慎重选择你就业的城市。这点是目前多数人都忽略的重要因素。无论你的设计思路和发展方向都要依托你所在城市来作为载体。
- 您在访问网站时是否会在有些页面上见到这种功能---您在可以访问此网站的同时,还可以查看您免费邮箱中是否有新邮件。这个功能是不是让您觉得很心动
- 装tensorflow-gpu的时候经常遇到问题,自己装过几次,经常遇到相同或者类似的问题,所以打算记录一下,也希望对其他人有所帮助基本信息
- 上次学会了爬取图片,这次就想着试试爬取商家的联系电话,当然,这里纯属个人技术学习,爬取过后及时删除,不得用于其它违法用途,一切后果自负。首先
- MatrixOne是一个新一代超融合异构数据库,致力于打造单一架构处理TP、AP、流计算等多种负载的极简大数据引擎。MatrixOne由Go
- 目录一、pyecharts绘制词云图WordCloud.add()方法简介二、绘制词云图对应轮廓按diamond显示三、对应完整代码如下所示
- 一.问题描述在二维数组的遍历中,我们经常使用双层for循环。在某些时候,我们并不需要遍历整个二维数组。当条件满足时就应该终止for循环。但是
- 注意:本示例仅供学习参考~混淆原理出于某种原因,明文信息通过自定义字体进行渲染,达到混淆目的。举个例子:网页源码 <p>123&
- 1. 引言之前已经有博客专门介绍了Python中的列表生成式,可能大家还不太擅长。这里推荐九个Python列表生成式的面试题(从简单到困难排
- 小主我总结了一下,看官仅供参考。具体运行时间,要看电脑,程序复杂程度,截图大小,原本为四个方法,后面又发现了一种。补上运行熟练度等因素。方法
- 编程中有时候需要一个初始极大值(或极小值)作为temp,当然可以自定义设置为10000(whatever),不过python中有一个值可以代
- Mootools 1.2手风琴(Accordion)教程原文地址:30 Days of Mootools 1.2 Tutoria
- 如下所示:import numpy as npimport pandas as pd################# 准备数据 #####
- 1.JOIN和UNION区别 join 是两张表做交连后里面条件相同的部分记录产生一个记录集, union是产生的两个记录集(字段要一样的)
- 你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用。$ ls /usr/bin/python*/
- 1. Python的figure参数主要有:def figure(num=None, # autoincrement if None, el
- lambda函数lambda是什么大家好,今天给大家带来的是有关于Python里面的lambda表达式详细解析。lambda在Python里
- 本文实例讲述了python基于pygame实现响应游戏中事件的方法。分享给大家供大家参考,具体如下:先看一下我做的demo效果:当玩家按下键