Sebelumnya kami merancang antarmuka grafis dan menyelesaikan fungsi terjemahan melalui crawler. Pada bagian ini kami akan menggabungkan konten sebelumnya untuk menyelesaikan produksi penerjemah.
importwximporturllib.request#Impor modul importurllib.parseimportjsonclassMyFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,None,-1,translator,size=(600,200))panel=wx.Panel(self) # Buat kanvas, lalu buat pita dan letakkan di atas kanvas #Buat judul dan letakkan di panel self.title=wx.StaticText(panel, label='Simple Translator') #Buat teks statis dan letakkan di panel di self.translate=wx.StaticText(panel,label='Translation content:')#Buat kotak teks masukan dan letakkan di panel self.tran_slate=wx.TextCtrl(panel,style=wx.TE_LEFT)# Buat Tombol terjemahan, letakkan di panel self.button_ts=wx.Button(panel,label='Translation')#Bind acara tombol, klik untuk memicu fungsi terjemahan self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)#Buat Tombol tutup, letakkan di panel self.button_shutdown=wx.Button(panel,label='Close')#Bind acara tombol, klik untuk memicu fungsi shutdown self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx.BoxSizer(wx.HORIZONTAL)#Letakkan teks statis dan kotak teks masukan di 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)#Buat BoxSizercontainer_two=wx.BoxSizer(wx.HORIZONTAL)#Masukkan dua tombol ke dalam BoxSizer container_two.Add(self.button_ts, proporsi =0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self.button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#Buat BoxSizersizers=wx.BoxSizer(wx .VERTICAL) yang disusun secara vertikal )#Masukkan konten di atas ke dalam sizers BoxSizer ini.Tambahkan(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.Tambahkan(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(Hasil terjemahan:,hasil)wx.MessageBox('Hasil terjemahan: %s'%hasil,'Perangkat terjemahan')defOnclickEvent(self, e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
Karena kode di bagian ini berasal dari dua bagian sebelumnya, kami tidak akan mengulangi analisis bagian kode yang sama. Mari kita lihat perbedaannya.
#Buat tombol terjemahan dan letakkan di panel self.button_ts=wx.Button(panel,label='Translation')#Ikat acara tombol, klik untuk memicu fungsi terjemahan self.button_ts.Bind(wx.EVT_BUTTON,self .OnclickEventname) #Buat tombol shutdown dan letakkan di panel self.button_shutdown=wx.Button(panel,label='Close') #Bind event tombol, klik untuk memicu fungsi shutdown self.button_shutdown.Bind(wx. EVT_BUTTON,self.OnclickEvent)
Kami telah mengikat peristiwa ke tombol terjemahan dan tutup masing-masing. Ketika diklik, fungsi terkait akan terpicu. Mari kita analisis fungsi tombol tutup relatif sederhana, yaitu klik tombol untuk menutup jendela.
defOnclickEvent(self,e):self.Destroy()
Saat kita mengklik tombol terjemahan, fungsi terjemahan akan terpicu. Isi dari fungsi terjemahan dapat dipelajari secara detail di bagian sebelumnya.
urnm=self.tran_slate.GetValue()
Meneruskan informasi yang dimasukkan pada antarmuka GUI ke data.
data['i']=urnm
Ini sesuai dengan konten yang kita masukkan di bagian sebelumnya. Terakhir, lihat baris kode ini.
wx.MessageBox('Hasil terjemahan: %s'%hasil,'Penerjemah')
Kami mengembalikan hasil terjemahan melalui jendela, sehingga mewujudkan fungsi terjemahan.
Akhirnya kami datang untuk menguji penerjemah kami.
Konten pertarungan sebenarnya di bagian ini relatif mendasar, terutama menggabungkan pemrograman GUI dan konten crawler. Jika Anda tertarik, Anda juga dapat menggabungkan database untuk melengkapi konten pertarungan sebenarnya. Pertarungan sebenarnya berikutnya akan menggabungkan database untuk lebih melengkapi konten sebenarnya konten pertarungan.