python安装界面翻译_python 写一个桌面版的翻译软件

主要技术:爬虫和tkinter模块的运用

思路说明:设计一个图形界面,第一行输入中文,点击 “翻译” 按钮,此时做的就是将输入的内容,通过有道网页翻译,发出POST请求,得到回应后,将翻译结果显示在第二行,现象是 “结果” 行输出翻译结果;点击 “退出” 按钮就退出

先说布局-------tkinter的运用

最终实现图片如下

cf05e05930b7

image.png

直接上代码

from tkinter import *

master = Tk()

#设置标题

master.title('翻译软件')

#小x,非大X,设置大小

master.geometry('400x100+450+278')

#设置标签,排版(第一行第一列,即row=0,column=0)

Label(master,text="输入任容:",font=('GB2312',18),fg='blue').grid(row=0,column=0)

Label(master,text="结果:",font=('GB2312',18),fg='blue').grid(row=1,column=0)

#设置文本框 对应上边lable的排版

Entry(master,font=('GB2312',18)).grid(row=0,column=1)

Entry(master,font=('GB2312',18)).grid(row=1,column=1)

#设置按钮 按钮增加响应事件commnad=函数名,sticky设置对齐(参数 东起南北)

Button(master,text="翻译",width=10,font=('GB2312',18)).grid(row=2,column=0,sticky=W)

Button(master,text="退出",width=10,font=('GB2312',18),command=master.quit).grid(row=2,column=1,sticky=E)

master.mainloop()

产生如下界面 点击退出,就会推出

cf05e05930b7

image.png

爬虫部分

import json

import requests

def fanyi():

#url不是http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule,把_o去掉

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

data ={

'i': '你好',

'doctype': 'json'

}

#此处是POST请求

r = requests.post(url,data=data)

ret = r.content.decode()

result = json.loads(ret)

print(result)

fanyi()

输出结果,可以看出返回结果在JSON里面

cf05e05930b7

image.png

说下思路,打开有道翻译网页版,F12,查看Network,翻译 "你好"

输出 hello,在这里可以获取url和请求方式POST,往下找到Form Date就是需要POST的数据结构,只需2个,就可以了

cf05e05930b7

image.png

cf05e05930b7

image.png

整合两部分

首先,输出框里面是个变量,因为输入内容不定

res = StringVar()

entry2 = Entry(master,font=('GB2312',18),textvariable=res)

entry2.grid(row=1,column=1)

其次设置翻译按钮事件,关联到自己写的fanyi函数

Button(master,text="翻译",width=10,font=('GB2312',18),command=fanyi).grid(row=2,column=0,sticky=W)

最后就是翻译函数,首先获取输入内容,然后在将爬取到的结果给变量

res(上面定义的)

def fanyi():

#获取输入内容,并去除空格

content = entry1.get().strip()

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

#组合需要POST的data数据,需要翻译内容为content变量

data ={

'i': content,

'doctype': 'json'

}

#发送请求

r = requests.post(url,data=data)

ret = r.content.decode()

result = json.loads(ret)

print(result)

#输出结果为:{'type': 'ZH_CN2EN', 'errorCode': 0, 'elapsedTime': 0, 'translateResult': [[{'src': '你好', 'tgt': 'hello'}]]}

#设置结果框res变量为需要的结果,不熟悉dict操作的,百度下

#只需要hello

res.set(result['translateResult'][0][0]['tgt'])

完整代码

import json

from tkinter import *

import requests

def fanyi():

content = entry1.get().strip()

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

data ={

'i': content,

'doctype': 'json'

}

r = requests.post(url,data=data)

ret = r.content.decode()

result = json.loads(ret)

#print(result)

res.set(result['translateResult'][0][0]['tgt'])

#print(content)

master = Tk()

master.title('翻译软件')

#小x,非大X

master.geometry('400x100+450+278')

#设置标签

Label(master,text="输入任容:",font=('GB2312',18),fg='blue').grid(row=0,column=0)

Label(master,text="结果:",font=('GB2312',18),fg='blue').grid(row=1,column=0)

#设置文本框

entry1 = Entry(master,font=('GB2312',18))

entry1.grid(row=0,column=1)

res = StringVar()

entry2 = Entry(master,font=('GB2312',18),textvariable=res)

entry2.grid(row=1,column=1)

#设置按钮

Button(master,text="翻译",width=10,font=('GB2312',18),command=fanyi).grid(row=2,column=0,sticky=W)

Button(master,text="退出",width=10,font=('GB2312',18),command=master.quit).grid(row=2,column=1,sticky=E)

master.mainloop()

运行结果:

cf05e05930b7

image.png

cf05e05930b7

image.png

感谢阅读~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值