(文末有福利)
博主相关文章:
(1)PyQt5练习:结合matplotlib绘图
(2)PyQt5练习:词典翻译
(3)Linux下Qt/PyQt5无法调用fcitx中文输入法解决办法
(4)Windows python PyQt5调用百度api实现图片转文字
(5)PyQt5练习:积分计算器


翻译的API有有道词典和百度翻译,一开始是使用有道的,但是发现文本翻译有问题,只能翻译单词,就转成调用百度翻译API,按照特定格式传入参数,返回json翻译数据,参考官方python版例子做了个翻译软件,代码托管在https://github.com/ouening/python-code/tree/master/PyQt5/Translation,先放出效果

(1)界面使用qt designer设计,保存ui文件之后在代码上导入

(2)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 17 00:51:16 2018@author: kindypython 调用baidu api实现简单翻译软件前往http://api.fanyi.baidu.com/api/trans/product/index注册账号, 登录后台创建应用
"""import http.client as httplib
from hashlib import md5
import urllib
import random
import json
import sys
import time
from PyQt5 import QtCore, QtGui, uic
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QMessageBox
from PyQt5.QtWidgets import QFileDialog, QAction, qApp
from PyQt5.QtGui import QIcon, QPixmapqtCreatorFile = "youdao.ui" # 之前在designer建立的ui文件
# 使用uic加载
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)class MyApp(QMainWindow, Ui_MainWindow):def __init__(self):QMainWindow.__init__(self)Ui_MainWindow.__init__(self)super().__init__()self.initUI()       # 调用自定义的UI初始化函数initUI()self.initBaiDu()def initBaiDu(self):self.appKey = 'xxx' # 就是自己注册应用IDself.secretKey = 'xxx'    # 就是应用密钥self.httpClient = Noneself.myurl = '/api/trans/vip/translate'self.salt = random.randint(1, 65536) # 随机数def lang_transform(self, lang):'''tranform the language into correct format that ai.youdao.com accepted中文   zh-CHS日文    ja英文    EN韩文    ko法文    fr俄文    ru葡萄牙文  pt西班牙文  es'''if lang == "Chinese":return "zh"if lang == "Japanease":return "ja"if lang == "English":return "en"if lang == "Korea":return "kor"if lang == "Russia":return "ru"if lang == "French":return "fra"if lang == "Auto":return "auto"def initUI(self):'''Initialize the window's UI'''self.setupUi(self)self.setWindowTitle("Dict Translate")self.setWindowIcon(QIcon("translate.png"))   # 设置图标,linux下只有任务栏会显示图标self.initMenuBar()      # 初始化菜单栏self.initToolBar()      # 初始化工具栏self.initButton()       # 初始化按钮self.show()             # 显示def initMenuBar(self):'''初始化菜单栏'''menubar = self.menuBar()#self.actionExit.triggered.connect(qApp.quit)    # 按下菜单栏的Exit按钮会退出程序#self.actionExit.setStatusTip("退出程序")         # 左下角状态提示#self.actionExit.setShortcut('Ctrl+Q')           # 添加快捷键exitAct = QAction(QIcon('exit.png'), 'Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.triggered.connect(qApp.quit)fileMenu = menubar.addMenu('&File')fileMenu.addAction(exitAct)fileMenu = menubar.addMenu('&Help')def initToolBar(self):'''初始化工具栏创建一个QAction实例exitAct,然后添加到designer已经创建的默认的工具栏toolBar里面'''exitAct = QAction(QIcon('exit.png'), 'Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.triggered.connect(qApp.quit)self.toolBar.addAction(exitAct)def initButton(self):''''''self.btnClear.clicked.connect(self.clearButton_callback) # 按下按钮调用回调函数self.btnClear.setToolTip("清除文本输入内容")                     # 设置提示#self.btnBrowse.setStyleSheet("{border-image: url(/home/kindy/Files/python/gui/pyq/play.ico);}") # 此代码没有效果self.btnExchange.clicked.connect(self.exchangeButton_callback)      # 一旦按下按钮,连接槽函数进行处理self.btnExchange.setToolTip("转换翻译语言")self.btnTranslate.clicked.connect(self.transButton_callback)self.btnTranslate.setToolTip("翻译内容")def clearButton_callback(self):self.transInput.clear()self.transInput.setFocus()def exchangeButton_callback(self):passdef transButton_callback(self, filename):'''调用有道词典API进行文字识别'''start = time.time()end = time.time()trans = self.get_translation( self.transInput.toPlainText())
#        self.transOutput.setPlainText(self.transInput.toPlainText()+self.fromLang)self.transOutput.setPlainText(trans)self.transOutput.setStatusTip("翻译时间:%.2fs"%(end-start))def get_translation(self, query):self.q = self.transInput.toPlainText()          # 获取控件内容,得到询的内容self.toLang = self.lang_transform(self.transTo.currentText() )  # 目标语言self.fromLang =  self.lang_transform (self.transFrom.currentText())     # 源语言sign = self.appKey + query + str(self.salt) + self.secretKey     # 签名m1 = md5()m1.update( sign.encode() )sign = m1.hexdigest()       # 计算签名的哈希值self.myurl = self.myurl+'?appid='+self.appKey+'&q='+urllib.parse.quote(query)+'&from='+self.fromLang+'&to='+self.toLang+'&salt='+str(self.salt)+'&sign='+signtry:httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')httpClient.request('GET', self.myurl)#response是HTTPResponse对象response = httpClient.getresponse()res = response.read().decode('unicode-escape') # unicode解码hjson = json.loads(res)
#exp = str(hjson['trans_result'][0]["dst"])
#            exp = exp[0]
#            exp = exp.replace(',','\r\n')
#            exp = exp.replace('[',' ')
#            exp = exp.replace(']',' ')
#            exp = exp.replace('\'',' ')return expexcept Exception as e:print (e)finally:if httpClient:httpClient.close()if __name__ == "__main__":app = QApplication(sys.argv)window = MyApp()sys.exit(app.exec_())

如果需要PyQt5相关书籍教程的话,可以微信扫描下面二维码关注公众号“向芽塔”,后台回复“pyqt5教程”获取哦!

这里预告一下书籍书签目录:

PyQt5练习:词典翻译相关推荐

  1. python有道翻译-Python调用有道词典翻译

    Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...

  2. python有道-Python调用有道词典翻译

    Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...

  3. php调用翻译,PHP调用有道词典翻译API实现翻译功能及代码

    PHP调用有道词典翻译API实现翻译功能及代码,其中英文可以翻译,中文不能翻译是什么问题啊?急 http://fanyi.youdao.com/openapi.do?keyfrom=cxvsdffd3 ...

  4. 网络编程——UDP协议的实践(词典翻译服务器(英译汉))

    词典翻译 服务器 基本服务器 客户端 测试 客户端输入英文服务器返回汉语 服务器 基本服务器 import java.io.IOException;import java.net.DatagramPa ...

  5. Ubuntu配置GoldenDict词典翻译-划线翻译

    Ubuntu配置GoldenDict词典翻译-划线翻译 GoldenDict可以代替金山词霸,在网页上或者论文上英语的划词翻译. 1.安装 sudo apt-get install goldendic ...

  6. 在线英语词典翻译系统

    github源码链接: https://github.com/LxNoMi/online_English_translation_system 绪论 在线英语词典翻译系统是一个基于客户端和服器(C-S ...

  7. python软件菜单翻译_制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 源码地址: 源码 软件截图 主要的思想 界面方面 界面主要采用PyQt5的QtDesigner来制作, ...

  8. python软件菜单翻译_制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)!

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) @(目录) 翻译软件上传到github上. 源码地址: 软件截图 主要的思想 界面方面 界面主要采用PyQt5的QtDesigner来 ...

  9. 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) @(目录) 软件截图 主要的思想 界面方面 源码: https://github.com/LiYangSir/Translate    ...

最新文章

  1. linux数组删除数据,JavaScript在数组的循环中删除元素
  2. Spring Boot【快速入门】
  3. rubymine 保存成unix格式_如何免费在线试用 200+ Linux 和 Unix 发行版?
  4. php写进度条原理,php实现进度条原理
  5. binder 从c到java_Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析...
  6. Hadoop的调度器总结(转)
  7. CHROME 拖动安装插件报错CRX_HEADER_INVALID的解决办法
  8. 微信小程序如何关闭云开发
  9. layui form.js select的扩展插件(转自Author:@贤心)
  10. ae制作小球轨迹运动_视频剪辑教程:AE动画教程,如何创建一个运动的小球
  11. 用C#实现一个简易的软件光栅化渲染器
  12. C语言 =(按位与后赋值)^=(按位异或后赋值) |=(按位或后赋值)
  13. 安规标准确定爬电距离和电气间隙
  14. IBM朱辉:大数据分析的5个高复制使用场景及案例分享(含PPT)
  15. 经纬度(wgs)并且根据经纬度获取城市
  16. java歌曲上传下载功能实现,Java上传下载功能的实现详解
  17. 绘画Psd文件下载网址记录
  18. Thrustmaster Hotas Warthog/猪杆/疣猪飞行操作杆开发
  19. 真真正正的九面阿里才定级 P6+ 支持背调,还不来看?(建议收藏)
  20. 经典合成器:KORG WAVESTATION for Mac

热门文章

  1. 各个地区的语言代号及value文件夹命名规范
  2. 在HiFive1开发板上运行RT-Thread
  3. Win10家庭版使用远程连接的解决办法
  4. mkdir创建文件夹,删除文件夹
  5. UFS Compliance测试夹具
  6. 图形数据库Neo4J简介
  7. 民间美术与民俗的关系
  8. Ubuntu命令之alias - 设置命令的别名
  9. 企业级基于Centos8.5配置IPXE服务批量部署windows方案
  10. SpringBoot配置文件的修改