翻译器流程
1:功能实现
软件主要使用了 Requests 库和 Tkinter 窗口视窗设计的模块, 调用有道翻译接口完成翻译功能:
2:Requests 库
在 Web 后台开发过程中, 会遇到需要向第三方发送 http 请求的场景, Python 中的 Requests 库可以很好地满足这一要求。Requests 模 块 数据 第 三 方 库 , 这 里 使用 pip 进行安装: pip install requests。
3:Tkinter 模块
Tkinter 是 Python 的 标 准 GUI 库 。 Python 使 用Tkinter 可 以 快速 的 创 建 GUI 应 用 程 序 。 由 于 Tkinter是内置到 Python 的安 装包中、 只要安装好 Python 之后 就 能 import Tkinter 库 、 而 且 IDLE 也 是 用 Tkinter编写而成、 对于简单的图形界面 Tkinter 还 是 能 应 付自如。
4:有道翻译接口
有道翻译 API,为广大开发者提供开放接口,或网站可通过有道翻译 API, 构建丰富多样的功能或应用,为用户带来即时、准确、方便的查词或翻译体验, 从而降低语言理解与应用门槛。
5:程序设计
定义 Translate 类, 主要功能:
(1) def init (self) : 初始 化 窗 口 名 称 及 大 小 、 创
建一个输入框用于等待用户输入、 创建一个文本展示框
用于输出翻译结果。
(2) def gui_arrang (self) : 完 成 页 面 元 素 布 局 , 设
置各部件的位置。
(3) def fanyi (self) : 完成翻译功能。
(4) def cle (self) : 用于清空输出框的内容。
(5) def cle_e (self) : 用于清空输入框的内容。
定义主函数 def main() :主要用于完成对 Translate 类
的实例化和调用, 为整个软件的启动入口。
# -*- coding:utf-8 -*-
import requests
from requests.exceptions import RequestException
import tkinter as tk
class Translate():
def _init_(self):
self.window = tk.Tk() # 创建 window 窗口
self.window.title("专业英语翻译器") # 定义
# 窗口名称
self.window.resizable(0, 0) # 禁止调整窗口
# 大小
self.input = tk.Entry(self.window, width=80)
# 创建一个输入框,并设置尺寸
self.info = tk.Text(self.window, height=18)
# 创建一个文本展示框,并设置尺寸
# 添加一个按钮,用于触发翻译功能
self.t_button = tk.Button(self.window, text=' 翻 译 ', relief=tk.RAISED, width=8, height=1, command=self.fanyi)
# 添加一个按钮,用于触发清空输入框功能
self.c_button1 = tk.Button(self.window, text=' 清空输 入 ', relief=tk.RAISED, width=8, height=1, command=self.cle_e)
# 添加一个按钮,用于触发清空输出框功能
self.c_button2 = tk.Button(self.window, text=' 清空输出 ', relief=tk.RAISED, width=8, height=1, command=self.cle)
# 添加一张图标
self.image_file = tk.PhotoImage(file='logo.fw.png')
self.label_image = tk.Label(self.window, image=self.image_file)
"""完成页面元素布局,设置各部件的位置"""
def gui_arrang(self):
self.input.grid(row=0, sticky="W", padx=1)
self.info.grid(row=1)
self.t_button.grid(row=0, column=1, padx=2)
self.c_button1.grid(row=0, column=2, padx=2)
self.c_button2.grid(row=0, column=3, padx=2)
self.label_image.grid(row=1, column=1, columnspan=3)
"""定义一个函数,完成翻译功能"""
def fanyi(self):
original_str = self.input.get()
# 定义一个变量,用来接收输入框输入的值
data = {'doctype': 'json', 'type': 'AUTO', 'i': original_str} # 将输入框输入的值,赋给接口参数
url = "http://fanyi.youdao.com/translate"
try:
r = requests.get(url, params=data)
if r.status_code == 200:
result = r.json()
translate_result = result['translate Result'][0][0]["tgt"]
self.info.delete(1.0, "end") # 输出翻译
# 内容前,先清空输出框的内容
self.info.insert('end', translate_result)
# 将翻译结果添加到输出框中
except RequestException:
self.info.insert('end', "发生错误")
"""定义一个函数,用于清空输出框的内容"""
def cle(self):
self.info.delete(1.0,"end") # 从第一行清除到
# 最后一行
"""定义一个函数,用于清空输入框的内容"""
def cle_e(self):
self.input.delete(0, "end")
def main():
t = Translate()
t.gui_arrang()
tk.mainloop()
if __name__ == '__main__':
main()
界面