基于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读取名为&ldquo;自定义回复.txt&rdquo;的文件,若不存在except就创建,若已存在直接读取即可。操作读取的字符串逐个添加到zidingyi字典中,判断输入的语句是否在zidingyi.keys()中即可做出相应回复。

添加后的效果图:

基于Python制作AI聊天软件的示例代码

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

标签:Python,AI,聊天
0
投稿

猜你喜欢

  • python3 wechatpy微信支付的项目实践

    2023-08-29 14:13:36
  • MySQL 替换某字段内部分内容的UPDATE语句

    2024-01-22 17:45:49
  • MySQL中join语句怎么优化

    2024-01-15 20:53:35
  • python中map的基本用法示例

    2023-09-24 15:56:26
  • Python面试之os.system()和os.popen()的区别详析

    2023-09-14 18:15:39
  • Python探索之ModelForm代码详解

    2022-05-16 06:14:33
  • win10从零安装配置pytorch全过程图文详解

    2022-07-01 20:54:55
  • Python格式化css文件的方法

    2021-02-14 11:38:34
  • SQLSERVER聚集索引和主键(Primary Key)的误区认识

    2024-01-14 07:49:56
  • win2000server IIS和tomcat5多站点配置

    2023-06-26 04:45:33
  • Python利用plotly绘制正二十面体详解

    2021-07-25 13:14:27
  • python Django框架快速入门教程(后台管理)

    2022-04-17 11:43:12
  • mysql 各种时间段查询

    2010-01-06 13:37:00
  • python 获得任意路径下的文件及其根目录的方法

    2022-02-02 17:32:15
  • win10下tensorflow和matplotlib安装教程

    2023-03-23 21:47:27
  • Python复制文件操作实例详解

    2023-10-22 19:15:29
  • Python画图常用命令大全(详解)

    2023-04-17 15:20:16
  • vue router路由嵌套不显示问题的解决方法

    2024-04-09 10:58:18
  • 亚马逊购物用户体验分析 (一)

    2009-10-25 12:40:00
  • vue项目中使用axios遇到的相对路径和绝对路径问题

    2024-05-13 09:37:40
  • asp之家 网络编程 m.aspxhome.com