Anteriormente projetamos a interface gráfica e completamos a função de tradução através de um crawler. Nesta seção combinaremos o conteúdo anterior para completar a produção do tradutor.
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) # Crie uma tela, depois crie uma fita e coloque-a na tela #Crie um título e coloque-o no painel self.title=wx.StaticText(panel, label='Simple Translator') #Crie um texto estático e coloque-o em o painel em self.translate=wx.StaticText(panel,label='Translation content:')#Crie uma caixa de texto de entrada e coloque-a no painel self.tran_slate=wx.TextCtrl(panel,style=wx.TE_LEFT)# Crie um botão de tradução, coloque-o no painel self.button_ts=wx.Button(panel,label='Translation')#Bind o evento do botão, clique para acionar a função de tradução self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)#Crie um botão de fechamento, coloque-o no painel self.button_shutdown=wx.Button(panel,label='Close')#Bind evento do botão, clique para acionar a função de desligamento self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx. BoxSizer(wx.HORIZONTAL)#Coloque o texto estático e a caixa de texto de entrada neste 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)#Crie um BoxSizercontainer_two=wx.BoxSizer(wx.HORIZONTAL)#Coloque dois botões neste BoxSizer container_two.Add(self.button_ts, proporção =0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self.button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#Crie um BoxSizersizers=wx.BoxSizer(wx .VERTICAL) organizado verticalmente )#Coloque o conteúdo acima neste 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) result=trs['translateResult'][0][0]['tgt']print(Resultado da tradução:,resultado)wx.MessageBox('Resultado da tradução: %s'%resultado,'Dispositivo de tradução')defOnclickEvent(self, e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
Como o código nesta seção é derivado das duas seções anteriores, não repetiremos a análise das mesmas partes do código. Vejamos principalmente as diferenças.
#Crie um botão de tradução e coloque-o no painel self.button_ts=wx.Button(panel,label='Translation')#Vincule o evento do botão, clique para acionar a função de tradução self.button_ts.Bind(wx.EVT_BUTTON,self .OnclickEventname) #Crie um botão de desligamento e coloque-o no painel self.button_shutdown=wx.Button(panel,label='Close') #Vincule o evento do botão, clique para acionar a função de desligamento self.button_shutdown.Bind(wx. EVT_BUTTON,self.OnclickEvent)
Vinculamos eventos aos botões de tradução e fechamento respectivamente. Quando clicados, as funções correspondentes serão acionadas. A função do botão fechar é relativamente simples, ou seja, clicar no botão para fechar a janela.
defOnclickEvent(self,e):self.Destroy()
Quando clicamos no botão de tradução, a função de tradução será acionada. O conteúdo da função de tradução pode ser aprendido em detalhes na seção anterior. Aqui passamos principalmente um parâmetro.
urnm=self.tran_slate.GetValue()
Passe as informações inseridas na interface GUI para os dados.
dados['i']=urnm
Isso corresponde ao conteúdo que inserimos na seção anterior. Por fim, observe esta linha de código.
wx.MessageBox('Resultado da tradução: %s'%resultado,'Tradutor')
Retornamos os resultados da tradução através de uma janela, realizando assim a função de tradução.
Finalmente chegamos para testar nosso tradutor.
O conteúdo de combate real nesta seção é relativamente básico, combinando principalmente programação GUI e conteúdo do rastreador. Se você estiver interessado, também pode combinar o banco de dados para completar o conteúdo de combate real. conteúdo de combate.