【写在前面】

鹏哥:最近老惹小燕同学不开心,结果都没人陪我聊天了。哎,好无聊呀!

肥宅男:女朋友什么的最无聊了,还没我的图灵机器人好玩。

鹏哥:图灵?好巧,和我部门同名。

【效果如下】

【实现过程】

1、GUI界面制作,其实和之前的几篇文章一样,没用到什么新的方法或者技巧,因此就不多说了。

2、智能聊天机器人的实现:

其实这块“核心代码”只是调用了对外商用的“图灵机器人”。在偶尔的机会中,看到有这么一个有趣的网站,http://www.turingapi.com/

因此就申请了个账号(未认证的个人用户一天只能回复3次/天,认证后可实现100次/天;当然人民币玩家就更多了)。

申请完账号后就很简单了,通过post请求发送http请求,响应即是图灵机器人的回复。唯一要注意的是:Post请求体内容中 ,key是自己申请的apikey值;usrid可随意设置,info是用户输入的问题,如下图所示:

【示例代码】

  1. # coding=utf-8
  2. # @Auther : "鹏哥贼优秀"
  3. # @Date : 2019/8/16
  4. # @Software : PyCharm
  5. from PyQt5 import QtCore, QtGui, QtWidgets
  6. import sys
  7. import requests
  8. class Ui_Dialog(object):
  9. def setupUi(self, Dialog):
  10. Dialog.setObjectName("智能聊天机器人")
  11. Dialog.resize(582, 434)
  12. self.label = QtWidgets.QLabel(Dialog)
  13. self.label.setGeometry(QtCore.QRect(40, 30, 361, 51))
  14. self.label.setStyleSheet("color: rgb(0, 0, 255);\n"
  15. "font: 16pt \"黑体\";\n"
  16. "text-decoration: underline;")
  17. self.label.setObjectName("dialog")
  18. self.plainTextEdit = QtWidgets.QPlainTextEdit(Dialog)
  19. self.plainTextEdit.setGeometry(QtCore.QRect(40, 80, 501, 181))
  20. self.plainTextEdit.setObjectName("plainTextEdit")
  21. self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(Dialog)
  22. self.plainTextEdit_2.setGeometry(QtCore.QRect(40, 310, 401, 41))
  23. self.plainTextEdit_2.setObjectName("plainTextEdit_2")
  24. self.plainTextEdit.setStyleSheet("font: 14pt \"黑体\";\n")
  25. self.pushButton = QtWidgets.QPushButton(Dialog)
  26. self.pushButton.setGeometry(QtCore.QRect(480, 320, 75, 23))
  27. self.pushButton.setStyleSheet("font: 14pt \"黑体\";\n"
  28. "background-color: rgb(0, 255, 0);")
  29. self.pushButton.setObjectName("pushButton")
  30. self.label_2 = QtWidgets.QLabel(Dialog)
  31. self.label_2.setGeometry(QtCore.QRect(50, 280, 54, 12))
  32. self.label_2.setText("")
  33. self.label_2.setObjectName("label_2")
  34. self.label_3 = QtWidgets.QLabel(Dialog)
  35. self.label_3.setGeometry(QtCore.QRect(50, 280, 71, 16))
  36. self.label_3.setStyleSheet("font: 75 12pt \"Aharoni\";")
  37. self.label_3.setObjectName("label_3")
  38. self.retranslateUi(Dialog)
  39. QtCore.QMetaObject.connectSlotsByName(Dialog)
  40. def retranslateUi(self, Dialog):
  41. _translate = QtCore.QCoreApplication.translate
  42. Dialog.setWindowTitle(_translate("Dialog", "智能聊天机器人"))
  43. self.label.setText(_translate("Dialog", "欢迎使用图灵智能聊天机器人:"))
  44. self.pushButton.setText(_translate("Dialog", "发送"))
  45. self.label_3.setText(_translate("Dialog", "输入框"))
  46. self.pushButton.clicked.connect(self.get_response)
  47. def get_response(self):
  48. enterstr = self.plainTextEdit_2.toPlainText()
  49. url = 'http://www.tuling123.com/openapi/api'
  50. data = {
  51. 'key': "自己的key值",
  52. 'info': enterstr,
  53. 'userid': "test",
  54. }
  55. r = requests.post(url, data=data).json()
  56. result = ">> 我:{0}\n \n>> 小七:{1}#^_^# \n".format(enterstr,r.get("text"))
  57. self.plainTextEdit.setPlainText(result)
  58. return result
  59. if __name__ == "__main__":
  60. app = QtWidgets.QApplication(sys.argv)
  61. main = QtWidgets.QMainWindow()
  62. mainwindow = Ui_Dialog()
  63. mainwindow.setupUi(main)
  64. main.show()
  65. sys.exit(app.exec())

【写在最后】

说到图灵 ,推荐大家看下卷福演的《模仿游戏》。讲述了“计算机之父”图灵的一生,很精彩,强推。



作者:鹏哥贼优秀

【Python成长之路】从零学GUI -- 制作智能聊天机器人的更多相关文章

  1. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  2. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  3. 【Python成长之路】装逼的一行代码:快速共享文件

    [Python成长之路]装逼的一行代码:快速共享文件 2019-10-26 15:30:05 华为云 阅读数 335 文章标签: Python编程编程语言程序员Python开发 更多 分类专栏: 技术 ...

  4. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  5. python成长之路第三篇(1)_初识函数

    目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...

  6. 【Python成长之路】词云图制作

    [写在前面] 以前看到过一些大神制作的词云图 ,觉得效果很有意思.如果有朋友不了解词云图的效果,可以看下面的几张图(图片都是网上找到的): 网上找了找相关的软件,有些软件制作 还要付费.结果前几天在大 ...

  7. 【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台

    [写在前面] 你要开发网站?    嗯.. 会Flask吗?    什么东西,没听过... 会JQuery吗?    是python的库吗 ? 那你会什么?    我会F12打开网站 好吧,那我们来写 ...

  8. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  9. python成长之路-----day1----笔记(1)

    1.python语言介绍 python的创始人:Guido Van Rossum 2.python是一门什么样的语言 编程语言主要从以下几个角度进行分类:编译型,静态型,动态性,强类型定义语言和弱类型 ...

随机推荐

  1. Python文字转换语音,让你的文字会「说话」,抠脚大汉秒变撒娇萌妹

    作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) APP 也有文字转换为语音的功能,虽然听起来很别扭,但是基本能解决长辈们看不清文字或者眼睛疲劳,通过文字转换为 ...

  2. P2115 [USACO14MAR]破坏(二分答案)

    给定一串数,问删除中间一段,剩下的平均数最小是多少: 不容易想到这是个二分. $solution:$ 来手玩一点式子: 首先很容易想到一个前缀和$sum_i $表示i到1的前缀和,这样就能很容易地O( ...

  3. T7

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...

  4. 大数据之路week01--自学之集合_2(列表迭代器 ListIterator)

    列表迭代器: ListIterator listerator():List集合特有的迭代器 该迭代器继承了Iterator迭代器,所以,就可以直接使用hasNext()和next()方法 特有功能: ...

  5. uboot启动完成,kernel启动时lcd屏幕出现杂色解决办法

    先说说开发环境吧: 1 内核:linux2.6.xx 2 uboot:买开发板带的 注释:在最后我又添加了问题得到完美解决的办法. 问题:uboot启动完成,kernel启动时lcd屏幕出现杂色(比如 ...

  6. Linux服务器更改Apache2默认页面

    方式一 获取root权限 su root //或者 sudo -i 进入 /var/www目录下 cd /var/www 创建目录 mkdir -m 777 myhtml // myhtml为自己创建 ...

  7. html部分知识点(待完善)

    html部分知识点 跳转 在A页面某链接处`<a href="#aa" target="_blank"></a> 在B页面指定的标题处定 ...

  8. 用c语言打印一个三角形

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h&g ...

  9. 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客

    上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...

  10. nyoj 23-取石子(一)(博弈)

    23-取石子(一) 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:20 submit:33 题目描述: 一天,TT在寝室闲着无聊,和同寝的人玩起了取 ...