简易的有道翻译器

简易翻译器

简单的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('<Control-Up>', self.ok1)
       self.text1.bind('<Control-Down>', 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("<Button-3>", self.popup)
       self.pack()
       # self.btn2.bind("<Button-1>", 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("<<Cut>>")
       self.text2.event_generate("<<Cut>>")

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

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

   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的图标,别问为什么,问就是博主的亲身经历。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值