用python实现的一个自动聊天的机器人
来源:互联网 发布:4g网络哪家快 编辑:程序博客网 时间:2024/05/16 08:54
import socketimport timeimport tkinterfrom tkinter.scrolledtext import ScrolledTextimport threadingimport requestsimport tkinterfrom socket import *from time import ctimefrom tkinter import *import socketimport timeimport tkinterfrom tkinter.scrolledtext import ScrolledTextimport threadingimport requestsimport tkinterfrom socket import *from time import ctimefrom tkinter import *global cs,Text_Show,Send_Show#发送按键的函数def Click_Send(): sendData=Send_Show.get() #获取输入内容 if sendData == 'quit': Text_Show.insert(tkinter.END,"与服务器连接已断开"+"\n") Text_Show.see(tkinter.END) cs.sendall(bytes(sendData, encoding="utf8")) cs.close() else: Text_Show.insert(tkinter.END,"客户端:"+sendData+"\n") Text_Show.see(tkinter.END) cs.sendall(bytes(sendData, encoding="utf8")) Send_Show.delete(0,END)#线程函数,循环接受客户端消息def Receive_Data(): while True: accept_data = str(cs.recv(1024), encoding="utf8") Text_Show.insert(tkinter.END,"服务器:"+accept_data+"\n") Text_Show.see(tkinter.END)#主函数if __name__ == "__main__": #初始化GUI root=tkinter.Tk() root.title("聊天小程序客户端 ") #顶部显示部分 frame1=Frame(root) frame1.pack() IP_Show_Label=Label(frame1,text="本程序默认IP:127.0.0.1\n默认端口为6000\n无法更改!!!") IP_Show_Label.pack(side='left') #中部聊天框显示部分 frame2=Frame(root) frame2.pack() Text_Show=ScrolledText(frame2,width=70,height=15) Text_Show.bind("<KeyPress>",lambda e:"break") Text_Show.pack(side="bottom",fill = 'both', expand = True) #底部消息发送部分 frame3=Frame(root) frame3.pack() e3=StringVar() Send_Show=Entry(frame3, textvariable=e3,width=60) buttontext2 = tkinter.StringVar() buttontext2.set('发送') button_Send = tkinter.Button(frame3,width=10, textvariable=buttontext2,command=Click_Send ) Send_Show.pack(side="left") button_Send.pack(side="left") frame3.pack() #初始化TCP协议 HOST='127.0.0.1' PORT=4700 BUFSIZ=1024 ADDR=(HOST,PORT) cs=socket(AF_INET,SOCK_STREAM,0) cs.connect(ADDR) thread=threading.Thread(target=Receive_Data) thread.start() root.mainloop()
global Text_Show#调用人工智能对话的函数,返回人工智能回答def AI_Talk(s): response = requests.post("http://www.tuling123.com/openapi/api", data={ "key": "5636c0854e88430383a861151bf764ca", "info": s, "userid": "123456" }) response = response.json() answer=response['text'] return answer#线程二函数,用来进行对话def Sever_Thread(sock,caddr): Text_Show.insert('end',"客户端@"+str(caddr[1])+"已连接!\n") while True: # 接收数据 data = str(sock.recv(1024).decode('UTF-8')) if data == "quit": Text_Show.insert('end',"客户端@"+str(caddr[1])+"终止了对话\n") Text_Show.see(tkinter.END) break else: Text_Show.insert('end',"来自客户端@"+str(caddr[1])+"的消息为:"+data+'\n') Text_Show.see(tkinter.END) #发送数据 time.sleep(0.2) data=AI_Talk(data) #data = '请输入发送至客户端的数据: 123123' #如果要手动输入的话就要设置好线程sleep时间不然还没有输入,就已经到其他线程了,就会发不出去。 sock.sendall(bytes(data, 'UTF-8')) sock.close()#线程一函数,监听端口,一旦有客户端接入,开启线程二def Sever_Accept(ss): while True: sock,caddr=ss.accept() Thread2 = threading.Thread(target=Sever_Thread, args=(sock,caddr)) Thread2.daemon=True #线程守护 Thread2.start()#服务器初始化def Sever_Init(): HOST = '' PORT = 4700 ADDR = (HOST, PORT) ss = socket(AF_INET, SOCK_STREAM, 0) ss.bind(ADDR) ss.listen(20) #允许最大监听数 Thread1=threading.Thread(target=Sever_Accept,args=(ss,)) Thread1.daemon=True #线程守护 Thread1.start()#主函数if __name__ == "__main__": root=tkinter.Tk() root.title("聊天小程序服务器端 ") frame1=Frame(root) frame1.pack() IP_Show_Label=Label(frame1,text="默认IP:127.0.0.1\n默认端口为6000\n无法更改!!!") IP_Show_Label.pack(side='left') frame2=Frame(root) frame2.pack() Text_Show=ScrolledText(frame2,width=100,height=30) Text_Show.bind("<KeyPress>",lambda e:"break") Text_Show.pack(side="bottom",fill = 'both', expand = True) Sever_Init() root.mainloop()
阅读全文
0 0
- 用python实现的一个自动聊天的机器人
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
- 一个聊天机器人的程序
- JAVASCRIPT实现基于文本的自动智能聊天机器人
- 一个使用 Python 的人工智能聊天机器人框架
- 聊天机器人的具体实现
- python利用TCP实现会聊天的小机器人
- 【开源】一个基于智能问答的聊天机器人实现
- 【开源】一个基于智能问答的聊天机器人实现
- 练习:一个面向对象的聊天机器人
- 第一篇:一个简单的聊天机器人
- 基于检索的聊天机器人的实现
- 如何做一个自动聊天的机器人或者绑定自己的微信,QQ.......
- Python编写的命令行版微信。(已集成自动聊天机器人(通过网址api形式))
- 百度大脑和图灵机器人制作一个简单的自动聊天机器人【PHP代码】
- Python写一个微信自动回复的机器人
- 语言识别和聊天机器人的实现
- 房地产大数据解决方案:被闲置的房产数据,被忽略的机会
- SpringMVC注解@valid与@validata,@null,@notblank,@NotEmpty
- Java日期使用
- Java 多线程编程设计模式之 Thread Pool(线程池)
- [ZJOI2006]物流运输
- 用python实现的一个自动聊天的机器人
- java微信支付异步回调接收参数
- java--面向对象之继承1(公有方法和私有方法)
- Neo4j_基础
- MS1850:CVBS转VGA功能芯片方案
- [大数据入门]解决centos6.5中WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor
- MySQL基本函数
- 结构光三维重建之单目标定的一种方法——建立“相位-像点-真实三维坐标”之间的关系
- Unity开发日常