以前に、グラフィカル インターフェイスを設計し、クローラーによる翻訳機能を完成させました。このセクションでは、前のコンテンツを組み合わせてトランスレーターの作成を完了します。
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='翻訳内容:')# のパネルに入力テキストボックスを作成し、パネルに配置します 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')#バインド ボタン イベント、クリックしてシャットダウン関数をトリガーします 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)#横に配置したBoxSizerを作成container_two=wx.BoxSizer(wx.HORIZONTAL)#このBoxSizerにボタンを2つ入れるcontainer_two.Add(self.button_ts, property =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()
このセクションのコードは前の 2 つのセクションから派生したものであるため、同じコード部分の分析は繰り返しません。主に相違点を見てみましょう。
#翻訳ボタンを作成してパネルに配置します 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,'Translator')
翻訳結果をウィンドウを通じて返すことで翻訳機能を実現します。
最後に、翻訳者をテストします。
このセクションの実戦コンテンツは主に GUI プログラミングとクローラー コンテンツを組み合わせた比較的基本的なもので、興味がある場合はデータベースを組み合わせて実戦コンテンツを完成させることもできます。次の実戦ではデータベースを組み合わせて実際の戦闘コンテンツをさらに完成させます。戦闘コンテンツ。