이전에는 그래픽 인터페이스를 설계하고 크롤러를 통해 번역 기능을 완료했습니다. 이 섹션에서는 이전 콘텐츠를 결합하여 번역기 제작을 완료합니다.
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')#버튼 이벤트를 바인딩하고 번역 기능을 트리거하려면 클릭하세요. self.button_ts.Bind(wx.EVT_BUTTON,self. OnclickEventname)# 닫기 버튼을 생성하여 패널에 넣습니다. self.button_shutdown=wx.Button(panel,label='Close')#Bind 버튼 이벤트, 클릭하여 종료 기능을 트리거합니다. self.button_shutdown.Bind(wx.EVT_BUTTON, self.OnclickEvent)container_one=wx.BoxSizer(wx.HORIZONTAL)#이 BoxSizer에 정적 텍스트 및 입력 텍스트 상자를 넣습니다. Add(self.tran_slate,proportion =1,flag=wx.ALL,border=7)#가로로 배열된 BoxSizer 만들기container_two=wx.BoxSizer(wx.HORIZONTAL)#이 BoxSizer 컨테이너에 두 개의 버튼을 넣습니다.Add(self.button_ts, ratio =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, e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame.Show()app.MainLoop()
이 섹션의 코드는 이전 두 섹션에서 파생되었으므로 동일한 코드 부분에 대한 분석을 반복하지 않겠습니다. 주로 차이점을 살펴보겠습니다.
#번역 버튼을 생성하여 패널에 배치 self.button_ts=wx.Button(panel,label='Translation')#버튼 이벤트 바인딩, 클릭하여 번역 기능 실행 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(self,e):self.Destroy()
번역 버튼을 클릭하면 번역 기능이 트리거됩니다. 번역 기능의 내용은 이전 섹션에서 주로 매개변수를 전달합니다.
urnm=self.tran_slate.GetValue()
GUI 인터페이스에 입력된 정보를 데이터에 전달합니다.
데이터['i']=urnm
이는 이전 섹션에서 입력한 내용과 일치합니다. 마지막으로 이 코드 줄을 살펴보세요.
wx.MessageBox('번역 결과: %s'%result,'번역기')
번역 결과를 윈도우를 통해 반환하여 번역 기능을 구현합니다.
마지막으로 우리는 번역기를 테스트하러 왔습니다.
이 섹션의 실제 전투 콘텐츠는 주로 GUI 프로그래밍과 크롤러 콘텐츠를 결합한 비교적 기본입니다. 관심이 있는 경우 데이터베이스를 결합하여 실제 전투 콘텐츠를 완성할 수도 있습니다. 전투 콘텐츠.