• 有道翻译小程序


    自己写的第一个Python小程序,刚开始学Python,语法都很基础,很多都还没学,只适合小白看。。。。

    1.首先要设计一个Windows窗口,

    root = Tk()
    root.title('翻译器')
    root['width'] = 250; root['height'] = 130

    其中的组件有

    (1)两个标签

    Label(root, text = '输入要翻译的内容:', width = 15).place(x = 1, y = 1)
    Label(root, text = '翻译的结果:', width = 18).place(x = 1, y = 20)

    (2)两个单行文本框(用Text也行,就是布局比较麻烦)

    Entry1 = Entry(root, width = 20, textvariable = s1)
    Entry1.place(x = 110, y = 1)
    Entry2 = Entry(root, width = 20, textvariable = s2, state = 'readonly')#设置为只读状态
    Entry2.place(x = 110, y = 20)

    (3)三个按钮

    Button1 = Button(root, text = '翻译', width = 8)
    Button1.place(x = 30, y = 80)
        
    Button2 = Button(root, text = '清空', width = 8)
    Button2.place(x = 100, y = 80)
        
    Button3 = Button(root, text = '退出', width = 8, command = root.quit)
    Button3.place(x = 170, y = 80)

    2.然后根据对按钮的不同进行不同的事件处理

    (1)翻译按钮

    先将输入的翻译内容用爬虫到有道翻译进行翻译,翻译再提取翻译后的内容显示在窗口中

    en_str = Entry1.get()
    vText = translate_Word(en_str)
    s2.set(str(vText))

    (2)清空按钮

    s1.set("")
    s2.set("")

    3.最重要的爬取有道翻译的信息

    (1)目标网址:'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

    (2)表单数据制作成字典形式,后序会进行转换

     (3)隐藏爬虫信息,伪装自己的头部

    head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0' 

     这样就可以成功用爬虫爬取有道翻译的数据,只需要写成一个函数,返回翻译的内容即可实现翻译的功能

    最后附上完整代码

     1 '''有道翻译小程序'''
     2 
     3 from tkinter import *
     4 import urllib.request
     5 import urllib.parse
     6 import json
     7 
     8 def translate_Word(en_str):#对传进来的参数进行翻译
     9 
    10     #获取后台url
    11     url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    12 
    13     head={}
    14     #隐藏爬虫信息,伪装自己的头部,字典
    15     head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0'
    16 
    17     #后台数据,获取表单
    18     data={}
    19     data['i']=en_str
    20     data['from']='AUTO'
    21     data['to']='AUTO'
    22     data['smartresult']='dict'
    23     data['client']='fanyideskweb'
    24     data['salt']='15590456742344'
    25     data['sign']='238073a9cc158731f9feea2f63589c3f'
    26     data['ts']='1559045674234'
    27     data['bv']='e2a78ed30c66e16a857c5b6486a1d326'
    28     data['doctype']='json'
    29     data['version']='2.1'
    30     data['keyfrom']='fanyi.web'
    31     data['action']='FY_BY_CLICKBUTTION'
    32 
    33     data = urllib.parse.urlencode(data).encode('utf-8')#转化为标准utf-8编码
    34 
    35     req = urllib.request.Request(url, data, head)#生成Request对象
    36     response = urllib.request.urlopen(req)#传递数据
    37     html = response.read().decode('utf-8')#读取信息并进行解码->Unicode
    38     target = json.loads(html)#字符串->字典
    39     return (target['translateResult'][0][0]['tgt'])
    40 
    41 
    42 def leftClick(event):#翻译事件
    43 
    44     en_str = Entry1.get()#获取要翻译的内容
    45     vText = translate_Word(en_str)#通过有道翻译得到的结果
    46     #Entry2.config(Entry2, text = vText)#设置修改组件属性
    47     #先清空再插入,组件设置为'readonly'
    48     #insert()和delete()方法对该组件直接被忽略
    49     s2.set(str(vText))
    50     #Entry2.insert(0,vText)
    51 
    52 def leftClick2(event):#清空事件
    53     s1.set("")
    54     s2.set("")
    55 
    56 if __name__ == "__main__":#运行自己模块时执行
    57 
    58     root = Tk()
    59     root.title('翻译器')
    60     root['width'] = 250; root['height'] = 130
    61 
    62     Label(root, text = '输入要翻译的内容:', width = 15).place(x = 1, y = 1)
    63 
    64     s1 = StringVar()
    65     s2 = StringVar()
    66 
    67     Entry1 = Entry(root, width = 20, textvariable = s1)
    68     Entry1.place(x = 110, y = 1)
    69 
    70     Label(root, text = '翻译的结果:', width = 18).place(x = 1, y = 20)
    71 
    72 
    73     Entry2 = Entry(root, width = 20, textvariable = s2, state = 'readonly')
    74     Entry2.place(x = 110, y = 20)
    75 
    76     Button1 = Button(root, text = '翻译', width = 8)
    77     Button1.place(x = 30, y = 80)
    78 
    79     Button2 = Button(root, text = '清空', width = 8)
    80     Button2.place(x = 100, y = 80)
    81 
    82     Button3 = Button(root, text = '退出', width = 8, command = root.quit)
    83     Button3.place(x = 170, y = 80)
    84 
    85     #给Button设置监听事件
    86     Button1.bind("<Button-1>", leftClick)
    87     Button2.bind("<Button-1>", leftClick2)
    88     #Button3.bind("<Button-1>", root.quit)!!!!不知道为什么不行
    89 
    90     root.mainloop()
    View Code
  • 相关阅读:
    铁轨
    POJ 2385 -- Apple Catching
    POJ 3258 -- River Hopscotch
    POJ 1469 -- COURSES (二分匹配)
    POJ 2349 -- Arctic Network
    最小生成树
    NOIP200703守望者的逃离
    NOIP200706字符串的展开
    POJ 1036 -- Gangsters
    POJ 1952 -- BUY LOW, BUY LOWER
  • 原文地址:https://www.cnblogs.com/zhaohongjie/p/14442030.html
Copyright © 2020-2023  润新知