自制翻译软件

#!usr/bin/env python
#-*- coding:utf-8 _*-
"""
@author:Administrator
@file: 翻译软件.py
@time: 2020/3/11 11:39
"""

import PySimpleGUI as sg
import os, sys

import sys
import uuid
import requests
import hashlib
import time



YOUDAO_URL = 'https://openapi.youdao.com/api'
APP_KEY = '4e44368ec9116bc7'
APP_SECRET = 'vWKlbHSGxFn9S42KNt7SCPMjCYM4kpas'


def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()


def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]


def connect(q,lang):
    data = {}
    data['from'] = 'auto'
    data['to'] = lang
    data['signType'] = 'v3'
    curtime = str(int(time.time()))
    data['curtime'] = curtime
    salt = str(uuid.uuid1())
    signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['q'] = q
    data['salt'] = salt
    data['sign'] = sign
    result = requests.post(YOUDAO_URL, data=data).json()
    return result['translation'][0]



# 构造 Frame
simple_frame = [[sg.Multiline('', key='_RES_', disabled=True,size=(200,200))]]

# 构造整体窗口布局
layout = [[sg.Multiline('', key='_Q_', focus=False,size=(120,10))],
          [sg.Text("请选择要翻译的语种",background_color="red"),
           sg.InputCombo(('自动识别','中文','韩语','日语','法语','西班牙语','意大利语','德语'),default_value='自动识别',key='LAN',size=(10,6)),
           sg.Button('翻译', key='_TRANS_')],
          [sg.Frame('翻译结果', simple_frame, title_color='gray')]
          ]

# 生成窗口
window = sg.Window('翻译小工具V1.0', layout,size=(800,800),background_color='skyBlue')

while True:
    event, value = window.Read()

    # 如果点击翻译按钮
    if event == '_TRANS_':
        try:
            if value['LAN'] == '中文':
                value['LAN'] = 'zh-CHS'
            elif value['LAN'] == '韩语':
                value['LAN'] = 'ko'
            elif value['LAN'] == '日语':
                value['LAN'] = 'ja'
            elif value['LAN'] == '法语':
                value['LAN'] = 'fr'
            elif value['LAN'] == '西班牙语':
                value['LAN'] = 'es'
            elif value['LAN'] == '意大利语':
                value['LAN'] = 'it'
            elif value['LAN'] == '德语':
                value['LAN'] = 'de'

            result = connect(value['_Q_'],value['LAN'])
            # 把翻译结果展示到Frame中的文本区域
            window['_RES_'].update(result)
        except Exception as e:
            sg.popup(e)

    if event is None:
        break

window.close()

 界面:

 

猜你喜欢

转载自www.cnblogs.com/wujf-myblog/p/12465074.html