基本思路:基于PySimpleGUI开发桌面GUI→获取键盘输入→访问GoogleTranslateAPI→爬虫获取翻译结果(涉及正则表达式匹配翻译结果)→输出翻译结果→翻译完成。什么是PySimpleGUI?创建图形用户界面(GUI)可能很困难,并且有许多不同的PythonGUI工具包可供选择。最常提到的前三个是Tkinter、wxPython和PyQt(或PySide2)。但是PySimpleGUI的更新工具包,旨在使创建GUI更容易。PySimpleGUI的主要功能是作为Tkinter、wxPython和PyQt之上的抽象层。你可以把它想象成一个包装器,它缩短了设计者和GUI之间的距离。虽然构建GUI变得很简单,但是很多细节都被忽略了,也就是说你只能使用PySimpleGUI提供的功能。这个版本建立在Tkinter之上,当然还有其他版本,比如PySimpleGUIQt,PySimpleGUIWx,PySimpleGUIWeb,...所以优点很简单,缺点也很简单。以下是使用方法的概述。其他GUI很难做到一篇文章说大话。导入库代码步骤如下(示例):importreimporthtmlfromurllibimportparseimportrequestsimportPySimpleGUIassg构建爬虫url代码如下(示例):url='http://translate.google.cn/m?q=%s&tl=%s&sl=%s'这里使用的url网络请求的数据,这里使用%字符串格式化方式。需要三个参数:text——待翻译的内容,to_language——目标语言类型,text_language——当前语言类型。构建翻译功能的代码如下(示例):deftranslate(text,to_language="en",text_language="auto"):text=parse.quote(text)url1=url%(text,to_language,text_language)响应=请求。get(url1)data=response.text#print(data)expr=r'(?s)class="(?:t0|result-container)">(.*?)<'result=re.findall(expr,data)print(result)if(len(result)==0):return""returnhtml.unescape(result[0])打印语句用于前期调试。调试成功后,可以注释掉或忽略。影响!GUI构建代码如下(示例):sg.theme('bluepurple')#设置主题字体=("fangsong",12)#字体仿宋,字号12menu=[["Help",["About","Item","Author"]]]#菜单栏设置值=['Chinese','English','Japanese','French','Russian','Auto']#语言选择(前端显示),默认只有6个,可以自己添加var=['zh','en','ja','fr','ru','auto']#语言选择(后端执行)dic=dict(zip(value,var))#语言字典配置layout=[[sg.Menu(menu,tearoff=False)],[sg.Text(text='Input',size=(26,1)),sg.Text(text='will',size=(2,1),justification='center'),sg.Combo(values=value,key='from',size=(10,1)),sg.Text(text='翻译is',size=(5,1),justification='center'),sg.Combo(values=value,key='to',size=(10,1))],[sg.Multiline(key="-IN-",size=(60,8),font=font)],[sg.Text(text='Output',size=(30,1))],[sg.Multiline(key="-OUT-",size=(60,8),font=font)],[sg.Text(text='',size=(36,1)),sg.Button("翻译",size=(6,1)),sg.Button("清除",size=(6,1)),sg.Button("退出",size=(6,1))]]window=sg.Window("自制桌面翻译器",layout,icon="CT.ico")#设置窗口名称、窗口布局、图标布局为GUI布局,使用列表方式,按行列排列逻辑执行语句代码如下(示例):whileTrue:event,values=window.read()ifeventin(None,"Exit"):#仅当“X”或“Exit”按钮时退出isclickedbreakifevent=="Translation":ifvalues["to"]==''orvalues["from"]=='':#没有选择语言类型时,弹窗提示sg.Popup("请选择语言类型并重试,谢谢!")else:tar=translate(values["-IN-"],dic[values["to"]],dic[values["from"]])window["-OUT-"].Update(tar)如果事件=="Clear":window["-IN-"].Update("")window["-OUT-"].Update("")ifevent=="About":sg.Popup("使用方法:","'翻译'确认输入并输出翻译结果","'清除'清除已有输入并清除翻译结果","'Exit'取消退出App",title='',font=font,auto_close=1)ifevent=="Item":sg.Popup("Translationtype:","'Inputtype'输入语言类型","'输出类型'输出语言类型",title='',font=font,auto_close=1)ifevent=="Author":sg.Popup("作者简介:","姓名:XXXXXX","微信:XXXXXX","E-mail:XXXXXX@qq.com",title='',字体=font,auto_close=1)window.close()windows.read()可以理解为监听,分别有事件,返回值valueswhile循环,当事件为空或者“exit”为=时,结束循环并出口。Popup是消息提示弹窗,可以作为警告、提示、确认的交互界面。界面效果总结到这里,整个工程就完成了,涉及到的一些基本技巧还需要一点技巧,好了,今天的分享就到这里!
