ก่อนหน้านี้ เราได้ออกแบบอินเทอร์เฟซแบบกราฟิกและฟังก์ชันการแปลเสร็จสมบูรณ์ผ่านโปรแกรมรวบรวมข้อมูล ในส่วนนี้ เราจะรวมเนื้อหาก่อนหน้านี้เพื่อสร้างนักแปลให้เสร็จสมบูรณ์
importwximporturllib.request#นำเข้าโมดูล importurllib.parseimportjsonclassMyFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,None,-1,translator,size=(600,200))panel=wx.Panel(self) # สร้างผืนผ้าใบ จากนั้นสร้างริบบิ้นและวางบนผืนผ้าใบ #สร้างชื่อและวางลงในแผง self.title=wx.StaticText(panel, label='Simple Translator') #สร้างข้อความคงที่และวางไว้ใน แผงใน self.translate=wx.StaticText(panel,label='Translation content:')#สร้างกล่องข้อความอินพุตและวางไว้ในแผง self.tran_slate=wx.TextCtrl(panel,style=wx.TE_LEFT)# สร้างปุ่มการแปล ใส่ไว้ในพาเนล self.button_ts=wx.Button(panel,label='Translation')#Bind the button event คลิกเพื่อทริกเกอร์ฟังก์ชันการแปล self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)#Create a close Button วางไว้ในพาเนล self.button_shutdown=wx.Button(panel,label='Close')#Bind button event คลิกเพื่อทริกเกอร์ฟังก์ชันการปิดเครื่อง self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx. BoxSizer(wx.HORIZONTAL)#ใส่ข้อความคงที่และกล่องข้อความอินพุตใน 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)#สร้าง BoxSizercontainer_two=wx.BoxSizer(wx.HORIZONTAL)#ใส่สองปุ่มลงใน BoxSizer นี้คอนเทนเนอร์_two.Add(self.button_ts, สัดส่วน =0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self.button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#สร้าง BoxSizersizers=wx.BoxSizer(wx .VERTICAL) ที่จัดเรียงในแนวตั้ง )#ใส่เนื้อหาด้านบนลงใน 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(ผลการแปล:,result)wx.MessageBox('ผลการแปล: %s'%result,'อุปกรณ์การแปล')defOnclickEvent(self, จ): self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
เนื่องจากโค้ดในส่วนนี้มาจากสองส่วนก่อนหน้า เราจะไม่ทำซ้ำการวิเคราะห์ส่วนโค้ดเดียวกันเป็นหลัก
#สร้างปุ่มการแปลและวางไว้ในแผง self.button_ts=wx.Button(panel,label='Translation')#Bind the button event, คลิกเพื่อทริกเกอร์ฟังก์ชันการแปล self.button_ts.Bind(wx.EVT_BUTTON,self .OnclickEventname) #สร้างปุ่มปิดเครื่องและวางไว้ในแผง self.button_shutdown=wx.Button(panel,label='Close') #ผูกเหตุการณ์ปุ่ม คลิกเพื่อทริกเกอร์ฟังก์ชันปิดเครื่อง self.button_shutdown.Bind(wx. EVT_BUTTON,self.OnclickEvent)
เรามีเหตุการณ์ที่ผูกไว้กับปุ่มการแปลและปิดตามลำดับ เมื่อคลิก ฟังก์ชันที่เกี่ยวข้องจะถูกเรียกใช้งาน มาวิเคราะห์ฟังก์ชันของปุ่มปิดค่อนข้างง่าย นั่นคือ คลิกปุ่มเพื่อปิดหน้าต่าง
defOnclickEvent (ตนเอง e): self.Destroy ()
เมื่อเราคลิกปุ่มการแปล ฟังก์ชันการแปลจะถูกเรียกใช้งาน เนื้อหาของฟังก์ชันการแปลสามารถเรียนรู้โดยละเอียดได้ในส่วนก่อนหน้า ที่นี่เราจะส่งผ่านพารามิเตอร์เป็นหลัก
urnm=self.tran_slate.GetValue()
ส่งข้อมูลที่ป้อนบนอินเทอร์เฟซ GUI ไปยังข้อมูล
ข้อมูล['i']=urnm
สิ่งนี้สอดคล้องกับเนื้อหาที่เราป้อนในส่วนก่อนหน้า สุดท้ายนี้ ให้ดูที่บรรทัดโค้ดนี้
wx.MessageBox('ผลการแปล: %s'%ผล,'ผู้แปล')
เราส่งคืนผลลัพธ์การแปลผ่านหน้าต่าง จึงทำให้ทราบถึงฟังก์ชันการแปล
ในที่สุดเราก็มาทดสอบนักแปลของเรา
เนื้อหาการต่อสู้จริงในส่วนนี้เป็นเนื้อหาพื้นฐาน โดยส่วนใหญ่จะรวมการเขียนโปรแกรม GUI และเนื้อหารวบรวมข้อมูลเข้าด้วยกัน หากคุณสนใจ คุณยังสามารถรวมฐานข้อมูลเพื่อทำให้เนื้อหาการต่อสู้จริงสมบูรณ์ต่อไปได้ เนื้อหาการต่อสู้