Anteriormente diseñamos la interfaz gráfica y completamos la función de traducción a través de un rastreador. En esta sección combinaremos el contenido anterior para completar la producción del traductor.
importwximporturllib.request#Importar módulo importurllib.parseimportjsonclassMyFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,None,-1,translator,size=(600,200))panel=wx.Panel(self) # Crea un lienzo, luego crea una cinta y colócala en el lienzo #Crea un título y colócalo en el panel self.title=wx.StaticText(panel, label='Simple Translator') #Crea un texto estático y colócalo en el panel en self.translate=wx.StaticText(panel,label='Contenido de traducción:')#Cree un cuadro de texto de entrada y colóquelo en el panel self.tran_slate=wx.TextCtrl(panel,style=wx.TE_LEFT)# Cree un botón de traducción, colóquelo en el panel self.button_ts=wx.Button(panel,label='Translation')#Vinque el evento del botón, haga clic para activar la función de traducción self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)#Cree un botón de cierre, colóquelo en el panel self.button_shutdown=wx.Button(panel,label='Close')#Vincular evento del botón, haga clic para activar la función de apagado self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx. BoxSizer(wx.HORIZONTAL)#Coloque el texto estático y el cuadro de texto de entrada en este BoxSizer container_one.Add(self.translate,proportion=0,flag=wx.ALL,border=7)container_one. Add(self.tran_slate,proportion =1,flag=wx.ALL,border=7)#Crear un BoxSizercontainer_two=wx.BoxSizer(wx.HORIZONTAL) dispuesto horizontalmente#Coloque dos botones en este BoxSizer container_two.Add(self.button_ts, proporción =0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self.button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#Crear un BoxSizersizers dispuesto verticalmente=wx.BoxSizer(wx .VERTICAL )#Coloque el contenido anterior en este BoxSizer sizers.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=10)sizers.Add( container_one,proportion=0,flag =wx.EXPAND|wx.LEFT|wx.RIGHT,border=40)sizers.Add(container_two,proportion=0,flag=wx.ALIGN_CENTER|wx.TOP,border=10)panel SetSizer(sizers)defOnclickEventname(self. ,e):globalpanelurnm=self.tran_slate.GetValue()url=http://fanyi.youdao.com/translate?smartresult=dict&smartresult=ruledata={}data['i']=urnmdata ['from']=' AUTO'data['to']='AUTO'data['smartresult']='dict'data['client']='fanyideskweb'data['salt']='15823411455528'data ['sign']=' d03024a90896a5eb31a74a9344657b0e'data['doctype']='json'data['version']='2.1'data['keyfrom']='fanyi.web'data['action']='FY_BY_REALTlME 'data=urllib.parse. urlencode(data).encode('utf-8')r=urllib.request.Request(url,data)r.add_header('User-Agent','Mozilla/5.0(WindowsNT10.0 ;Win64;x64)AppleWebKit/ 537.36(KHTML,likeGecko)Chrome/79.0.3945.130Safari/537.36')response=urllib.request.urlopen(r)html=response.read().decode('utf-8')trs =json.loads(html) resultado=trs['translateResult'][0][0]['tgt']print(Resultado de la traducción:,resultado)wx.MessageBox('Resultado de la traducción: %s'%resultado,'Dispositivo de traducción')defOnclickEvent(self, e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
Dado que el código de esta sección se deriva de las dos secciones anteriores, no repetiremos el análisis de las mismas partes del código. Veamos principalmente las diferencias.
#Cree un botón de traducción y colóquelo en el panel self.button_ts=wx.Button(panel,label='Translation')#Vinque el evento del botón, haga clic para activar la función de traducción self.button_ts.Bind(wx.EVT_BUTTON,self .OnclickEventname) #Cree un botón de apagado y colóquelo en el panel self.button_shutdown=wx.Button(panel,label='Close') #Vinque el evento del botón, haga clic para activar la función de apagado self.button_shutdown.Bind(wx. EVT_BUTTON,self.OnclickEvent)
Hemos vinculado eventos a los botones de traducción y cerrar respectivamente. Cuando se hace clic, se activarán las funciones correspondientes. Analicemos la función del botón de cerrar es relativamente simple, es decir, hacer clic en el botón para cerrar la ventana.
defOnclickEvent(self,e):self.Destroy()
Cuando hacemos clic en el botón de traducción, se activará la función de traducción. El contenido de la función de traducción se puede aprender en detalle en la sección anterior. Aquí pasamos principalmente un parámetro.
urnm=self.tran_slate.GetValue()
Pase la información ingresada en la interfaz GUI a datos.
datos['i']=urna
Esto corresponde al contenido que ingresamos en la sección anterior. Finalmente, mire esta línea de código.
wx.MessageBox('Resultado de la traducción: %s'%resultado,'Traductor')
Devolvemos los resultados de la traducción a través de una ventana, realizando así la función de traducción.
Finalmente venimos a probar nuestro traductor.
El contenido de combate real en esta sección es relativamente básico y combina principalmente programación GUI y contenido de rastreador. Si está interesado, también puede combinar la base de datos para completar el contenido de combate real. El próximo combate real combinará la base de datos para completar aún más el contenido de combate real. Contenido de combate.