栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

简易的有道翻译器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简易的有道翻译器

简易翻译器 简单的Introduction
  • 先说说这个工具我们将会用到的python库:
  • import tkinter as tk
    import requests

  • 用到tkinter是因为我们在后面会做一个UI界面,为什么会用tkinter,而不用pyqt5呢,一个简单的原因,因为简单,哈哈哈。
  • 用requests库是因为我们需要向有道的官网发送一个post请求,获取返回的数据,这里会用到一点点网络爬虫的东西,不懂的可以自学一下。
  • 废话不多说,开干!!!
代码部分 (1)爬虫部分
  • 有道翻译的网址:http://fanyi.youdao.com/translate?smartresult=dict,rule
  • translate函数
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0'}
def translate(ke):
    url = 'http://fanyi.youdao.com/translate?smartresult=dict,rule'
    data = {
        'i':ke,
        'doctype':'json'
    }
    res = requests.post(url, data=data, headers=headers)
    code = res.status_code
    if code == 200:
        res_data = res.json()
        if res_data['errorCode'] == 0:
            return res_data['translateResult'][0][0]["tgt"]
  • 介绍一下参数的含义:

ke:需要翻译的字符串,比如说(你好)。

(2)开始进入我们的UI部分

  • 可以看见上图有8个控件:
    2个按钮控件,2个Text,2个scrollbar,2个Label标签。
  • 直接上代码:
class Mywindow():
   def __init__(self):
       self.root = tk.Tk()
       self.root.geometry("600x400")
       self.root.title("简易翻译器")
       self.root.config(bg="SkyBlue")
       self.root.iconphoto(False, tk.PhotoImage(file='1.png'))


       self.label1 = tk.Label(self.root, text="原文:", font="宋体").place(x=0, y=0)
       self.text1 = tk.Text(self.root, height=6, font="宋体")
       self.text2 = tk.Text(self.root, height=6, font="宋体")

       self.scr1 = tk.Scrollbar(self.text1, width=10)
       self.scr1.pack(side=tk.RIGHT, fill=tk.Y)
       self.scr1.config(command=self.text1.yview)
       self.scr2 = tk.Scrollbar(self.text2, width=10)
       self.scr2.pack(side=tk.RIGHT, fill=tk.Y)
       self.scr2.config(command=self.text2.yview)

       self.text1.config(yscrollcommand=self.scr1.set)
       self.text2.config(yscrollcommand=self.scr2.set)
       self.text1.bind('', self.ok1)
       self.text1.bind('', self.btn2_del1)
       self.btn1 = tk.Button(self.root, text="确定", activeforeground='blue',
                             activebackground='yellow', command=self.ok).place(x=540, y=50, width=50, height=30)
       self.btn2 = tk.Button(self.root, text='清除', command=self.btn2_del,
                             activeforeground='blue', activebackground='yellow').place(x=540, y=120, width=50, height=30)
       self.label2 = tk.Label(self.root, text="译文:", font="宋体").place(x=0, y=170)
       self.menu = tk.Menu(self.root,
                   tearoff=False,
                   # bg="black",
                   )
       self.menu.add_command(label="剪切", command=self.cut)
       self.menu.add_command(label="复制", command=self.copy)
       self.menu.add_command(label="粘贴", command=self.paste)
       self.root.bind("", self.popup)
       self.pack()
       # self.btn2.bind("", self.btn2_del())
       self.root.mainloop()
   def ok(self):
       text = self.text1.get("1.0", "end")
       ts_text = translate(text)
       self.text2.insert('insert', ts_text)
   def ok1(self, e):
       text = self.text1.get("1.0", "end")
       ts_text = translate(text)
       self.text2.insert('insert', ts_text)
   def btn2_del(self):
       self.text1.delete("1.0", "end")
       self.text2.delete("1.0", "end")
   def btn2_del1(self, e):
       self.text1.delete("1.0", "end")
       self.text2.delete("1.0", "end")
   def cut(self, event=None):
       self.text1.event_generate("<>")
       self.text2.event_generate("<>")

   def copy(self, event=None):
       self.text1.event_generate("<>")
       self.text2.event_generate("<>")

   def paste(self, event=None):
       self.text1.event_generate('<>')
       self.text2.event_generate('<>')

   def popup(self, event):
       self.menu.post(event.x_root, event.y_root)
   def pack(self):
       self.text1.place(x=20, y=40, width=500, height=120)
       self.text2.place(x=20, y=200, width=500, height=120)
  • 代码有点乱哈,不过会tkinter的应该都能看懂。
  • 这里我设置了两个快捷键,ctrl+上建(up)是确定,ctrl+下键是清除。
  • 而且有右键菜单支持复制,粘贴,剪切。
  • 现在有个小缺陷,就是控件的大小不能随着窗体的变化而变化。这个很简单,大家可以自己修改参数。
  • 窗体的图标可以自己设置哈,支持png,大家尽量下载png,或icon的图标,别问为什么,问就是博主的亲身经历。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号