• 售前

  • 售后

热门帖子
入门百科

Python使用tkinter制作在线翻译软件

[复制链接]
亲亲阳光非 显示全部楼层 发表于 2021-10-25 20:17:04 |阅读模式 打印 上一主题 下一主题
tkinter的功能是云云强盛,竟然还能做翻译软件。当然是在线的,我发现有一个quicktranslate模块,可以提供在线翻译功能,相当于提供了一个翻译的接口,使用它就可以制作在线翻译软件了。下面是代码,分享给各人。
注意要起首 pip install quicktranslate
  1. #-*- coding:utf-8 -*-
  2. import tkinter as tk  #使用Tkinter前需要先导入
  3. from tkinter import messagebox,ttk
  4. import datetime,os,time,re,requests
  5. from quicktranslate import get_translate_baidu,get_translate_youdao
  6. class MY_GUI(tk.Tk):
  7. #初始化
  8. def __init__(self):
  9. super().__init__()
  10. self.set_window()
  11. self.set_frame()
  12. self.set_body()
  13. #设置窗口
  14. def set_window(self):
  15. self.title("文本翻译工具v1.0")   #窗口名
  16. w_width=800        #工具宽度
  17. w_height=600       #工具高度
  18. scn_width=self.maxsize()[0]    #屏幕宽度
  19. x_point=(scn_width-w_width)//2   #取点让工具居中
  20. self.geometry('%dx%d+%d+%d' %(w_width,w_height,x_point,100))
  21. #设置框架
  22. def set_frame(self):
  23. self.frame1=tk.Frame(self,pady=15,padx=15)
  24. self.frame1.grid(row=0,column=0,sticky='w')
  25. self.frame2=tk.Frame(self,pady=15,padx=15)
  26. self.frame2.grid(row=1,column=0,sticky='w')
  27. self.frame3=tk.Frame(self,pady=15,padx=15)
  28. self.frame3.grid(row=2,column=0,sticky='w')
  29. #设置组件
  30. def set_body(self):
  31. ttk.Label(self.frame1,text='输入要翻译的内容:').grid(row=0,column=0,sticky='w')
  32. ybar=ttk.Scrollbar(self.frame1,orient='vertical')
  33. textarea=tk.Text(self.frame1,width=100,height=12,yscrollcommand=ybar.set)
  34. ybar['command']=textarea.yview
  35. textarea.grid(row=1,column=0,columnspan=2)
  36. ybar.grid(row=1,column=2,sticky='ns')
  37. textarea.bind("<Double-Button-1>",lambda event:self.getword(event,textarea))  #双击触发单词翻译
  38. ttk.Button(self.frame1,text='点击翻译',command=lambda:self.translator(textarea.get(1.0,'end'))).grid(row=2,column=0,sticky='w')
  39. ttk.Button(self.frame1,text='清空',command=lambda:self.clear(textarea)).grid(row=2,column=1,sticky='w')
  40. #功能函数
  41. def clear(self,textarea):    #清空文本框
  42. textarea.delete(1.0,'end')
  43. def is_cn(self,uchar):
  44. """判断一个unicode是否是汉字"""
  45. if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
  46.   return True
  47. else:
  48.   return False
  49. def filterchar(self,char):   #过滤字母
  50. word=filter(str.isalpha, char)
  51. word=''.join(list(word))
  52. return word
  53. def getword(self,event,textarea):  #单词翻译
  54. place=textarea.index('current')
  55. row=int(place.split('.')[0])  #第几行
  56. col=int(place.split('.')[1])  #第几列
  57. col_start=col-15
  58. col_end=col+15
  59. part1=textarea.get(str(row)+'.'+str(col_start),str(row)+'.'+str(col)).split()[-1]
  60. part2=textarea.get(str(row)+'.'+str(col),str(row)+'.'+str(col_end)).split()[0]
  61. word_f=self.filterchar(part1+part2)
  62. word_t=get_translate_baidu(word_f)     #百度翻译
  63. if(word_t=='wrong!'):
  64.   word_t=get_translate_youdao(word_f)    #百度不行就用有道翻译
  65. textarea=tk.Text(self.frame3,width=100,height=8) #第三个框架添加文本框
  66. textarea.grid(row=0,column=0)
  67. textarea.delete(1.0,'end')
  68. textarea.insert(1.0,word_f+':\n'+word_t)   #文本框填入翻译结果
  69. #生词写入生词本
  70. if(word_t!='wrong!'):
  71.   with open('word.txt','a') as f:
  72.   f.write(word_f+' : '+word_t+"\n")
  73. def translator(self,content):    #段落翻译
  74. test_url='http://youdao.com'
  75. try:
  76.   requests.get(test_url,timeout=2)
  77. except:
  78.   messagebox.showerror('警告','没有联网')
  79. if(self.is_cn(content)):    #如果输入的是中文,那就是中译英,要用英文句号
  80.   sep="."
  81. else:
  82.   sep="。"
  83. contents=content.split('\n')   #段落分割
  84. strs=""
  85. for paragraph in contents:
  86.   if(paragraph):
  87.   sentences=paragraph.split('.')  #句子
  88.   for sentence in sentences:
  89.    if(sentence):
  90.    res=get_translate_youdao(sentence)  #有道翻译
  91.    if(res=='wrong!'):
  92.     res=get_translate_google(sentence) #有道不行就用谷歌翻译
  93.    strs+=res+sep     
  94.   strs+="\n"
  95. ybar=ttk.Scrollbar(self.frame2,orient='vertical')
  96. textarea=tk.Text(self.frame2,width=100,height=12,yscrollcommand=ybar.set)  #第二个框架添加文本框
  97. textarea.bind("<Double-Button-1>",lambda event:self.getword(event,textarea)) #双击触发单词翻译 如果是中译英
  98. ybar['command']=textarea.yview
  99. textarea.grid(row=0,column=0)
  100. textarea.delete(1.0,'end')
  101. textarea.insert(1.0,strs)              #文本框填入翻译结果
  102. ybar.grid(row=0,column=1,sticky='ns')
  103. app=MY_GUI()
  104. app.mainloop()
复制代码
这是结果,双击单词可主动查词,段落翻译默认用有道,不可用谷歌;单词翻译默认百度,不可用有道。

以上就是本文的全部内容,渴望对各人的学习有所资助,也渴望各人多多支持脚本之家。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作