文章目录
- 前言
- 一、库安装
- 问题说明
- 二、功能实现
- 1. 翻译功能代码
- 2. 工具界面代码
- 3. 全部实现代码
- 注意
- 三、结语
前言
同事小强在网上不知道从哪找了个翻译小工具,用着不太顺手。想着自己常用的google翻译还不错,就搜了一下google翻译接口,果然python里有相关的库googletrans,于是就结合tkinter和googletrans写了一个google翻译小工具。
界面很简单如下:
一、库安装
pip install googletrans==4.0.0-rc1
问题说明
本来是直接安装pip install googletrans,但是翻译的时候报错 - AttributeError: ‘NoneType’ object has no attribute ‘group’,通过对问题的一番搜索,发现是 googletrans的版本的问题,默认安装的是3.0.0版本,但是由于google翻译更改了API,导致3.0.0版本报错,所以需要安装更新的版本。具体参考如下文章
Python3 googletrans谷歌翻译出错
二、功能实现
1. 翻译功能代码
from googletrans import Translatortranslator = Translator(service_urls=['translate.google.cn',])#检测翻译文本的语种
src_lang = translator.detect(text).lang #源语种为中文,则目标语种为英语
#中文有时会识别为日语,所以加上日语判断
if src_lang == 'zh-CN' or src_lang == 'ja': dest_lang = 'en'
else:dest_lang = 'zh-CN'result = translator.translate(text, dest = dest_lang).text
2. 工具界面代码
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtextwin = tk.Tk()
win.title('Google Translate(中英互译)')scrol_w = 80
scrol_h = 15#添加源文本scrolledtext输入框
scr1 = scrolledtext.ScrolledText(win, width = scrol_w, height = scrol_h, wrap = tk.WORD, font = 30)
scr1.grid(column = 0, row = 1)ttk.Label(win, text='').grid(column = 1,row = 2)#添加scrolledtext翻译文本显示框
scr2 = scrolledtext.ScrolledText(win, width = scrol_w, height = scrol_h, wrap = tk.WORD, font = 30)
scr2.grid(column = 0, row = 3)#添加翻译按钮
btn = ttk.Button(win, text = 'translate', command=translate)
btn.grid(column = 1, row = 3)scr1.focus()
win.mainloop()
3. 全部实现代码
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
from googletrans import Translatordef translate():#获取源文本scrolledtext输入框文本text = scr1.get(1.0, 'end')translator = Translator(service_urls=['translate.google.cn',])src_lang = translator.detect(text).langif src_lang == 'zh-CN' or src_lang == 'ja':dest_lang = 'en'else:dest_lang = 'zh-CN'result = translator.translate(text, dest=dest_lang).text#设置为正常状态scr2.configure(state='normal')#更新前删除上一次文本scr2.delete(1.0, 'end')#更新翻译文本scr2.insert('end', result)#设置为禁止编辑scr2.configure(state='disable')win = tk.Tk()
win.title('Google Translate(中英互译)')scrol_w = 80
scrol_h = 15
scr1 = scrolledtext.ScrolledText(win,width=scrol_w,height=scrol_h,wrap=tk.WORD,font=30)
scr1.grid(column=0, row=1)ttk.Label(win, text='').grid(column=1, row=2)scr2 = scrolledtext.ScrolledText(win,width=scrol_w,height=scrol_h,wrap=tk.WORD,font=30)
scr2.grid(column=0, row=3)#添加按钮
btn = ttk.Button(win, text='translate', command=translate)
btn.grid(column=1, row=3)scr1.focus()
win.mainloop()
注意
- scrolledtext.ScrolledText里的wrap=tk.WORD的作用是在行尾遇到单词显示不全的情况,会自动将整个单词放到下一行显示。
- scr2.delete(1.0, ‘end’)是用于清空上一次显示的翻译文本
- scr2.configure(state=‘disable’)是为了翻译文本显示后禁止对文本进行编辑,scr2.configure(state=‘normal’) 是在显示翻译文本前设置scrolledtext框为正常状态。
- scr1.focus() 的作用是打开界面时将光标设置在源文本scrolledtext输入框。
三、结语
以上就是google翻译小工具的实现过程,如发现错误或有任何疑问或建议,欢迎留言提出讨论。