Zuvor haben wir die grafische Benutzeroberfläche entworfen und die Übersetzungsfunktion über einen Crawler abgeschlossen. In diesem Abschnitt werden wir die vorherigen Inhalte kombinieren, um die Produktion des Übersetzers abzuschließen.
importwximporturllib.request#Importmodul importurllib.parseimportjsonclassMyFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,None,-1,translator,size=(600,200))panel=wx.Panel(self) # Erstellen Sie eine Leinwand, erstellen Sie dann ein Menüband und platzieren Sie es auf der Leinwand. #Erstellen Sie einen Titel und platzieren Sie ihn im Panel self.title=wx.StaticText(panel, label='Simple Translator') #Erstellen Sie einen statischen Text und platzieren Sie ihn im Panel das Panel in self.translate=wx.StaticText(panel,label='Translation content:')#Erstellen Sie ein Eingabetextfeld und platzieren Sie es im Panel self.tran_slate=wx.TextCtrl(panel,style=wx.TE_LEFT)# Erstellen Sie eine Übersetzungsschaltfläche und fügen Sie sie in das Panel ein self.button_ts=wx.Button(panel,label='Translation')#Binden Sie das Schaltflächenereignis und klicken Sie, um die Übersetzungsfunktion auszulösen self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)#Erstellen Sie eine Schaltfläche zum Schließen und fügen Sie sie in das Panel ein self.button_shutdown=wx.Button(panel,label='Close')#Schaltflächenereignis binden, klicken Sie, um die Shutdown-Funktion auszulösen self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx. BoxSizer(wx.HORIZONTAL)#Fügen Sie den statischen Text und das Eingabetextfeld in diesen BoxSizer ein 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)#Erstellen Sie einen horizontal angeordneten BoxSizercontainer_two=wx.BoxSizer(wx.HORIZONTAL)#Fügen Sie zwei Schaltflächen in diesen BoxSizer ein container_two.Add(self.button_ts, proportion =0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self.button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#Erstellen Sie eine vertikal angeordnete BoxSizers=wx.BoxSizer(wx .VERTICAL )#Fügen Sie den obigen Inhalt in diesen BoxSizer ein 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(Translation result:,result)wx.MessageBox('Translation result: %s'%result,'Translation device')defOnclickEvent(self, e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
Da der Code in diesem Abschnitt aus den beiden vorherigen Abschnitten abgeleitet ist, werden wir die Analyse derselben Codeteile nicht wiederholen. Schauen wir uns hauptsächlich die Unterschiede an.
#Erstellen Sie eine Übersetzungsschaltfläche und platzieren Sie sie im Panel self.button_ts=wx.Button(panel,label='Translation')#Binden Sie das Schaltflächenereignis und klicken Sie, um die Übersetzungsfunktion auszulösen self.button_ts.Bind(wx.EVT_BUTTON,self .OnclickEventname) #Erstellen Sie eine Schaltfläche zum Herunterfahren und platzieren Sie sie im Panel self.button_shutdown=wx.Button(panel,label='Close') #Binden Sie das Schaltflächenereignis und klicken Sie, um die Funktion zum Herunterfahren auszulösen self.button_shutdown.Bind(wx. EVT_BUTTON,self.OnclickEvent)
Wir haben Ereignisse an die Schaltflächen „Übersetzung“ und „Schließen“ gebunden. Beim Klicken werden die entsprechenden Funktionen ausgelöst. Die Funktion der Schaltfläche „Schließen“ ist relativ einfach. Klicken Sie auf die Schaltfläche, um das Fenster zu schließen.
defOnclickEvent(self,e):self.Destroy()
Wenn wir auf die Übersetzungsschaltfläche klicken, wird die Übersetzungsfunktion ausgelöst. Den Inhalt der Übersetzungsfunktion können Sie im vorherigen Abschnitt ausführlich erlernen. Hier übergeben wir hauptsächlich einen Parameter.
urnm=self.tran_slate.GetValue()
Übergeben Sie die auf der GUI-Schnittstelle eingegebenen Informationen an Daten.
data['i']=urnm
Dies entspricht dem Inhalt, den wir im vorherigen Abschnitt eingegeben haben. Schauen Sie sich abschließend diese Codezeile an.
wx.MessageBox('Übersetzungsergebnis: %s'%result,'Translator')
Wir geben die Übersetzungsergebnisse über ein Fenster zurück und realisieren so die Übersetzungsfunktion.
Endlich kommen wir, um unseren Übersetzer zu testen.
Der eigentliche Kampfinhalt in diesem Abschnitt ist relativ einfach und kombiniert hauptsächlich GUI-Programmierung und Crawler-Inhalte. Wenn Sie interessiert sind, können Sie die Datenbank auch kombinieren, um den eigentlichen Kampfinhalt zu vervollständigen Kampfinhalte.