Ранее мы разработали графический интерфейс и выполнили функцию перевода с помощью сканера. В этом разделе мы объединим предыдущий контент для завершения создания переводчика.
importwximporturllib.request#Модуль импорта importurllib.parseimportjsonclassMyFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,None,-1,translator,size=(600,2) 00))panel=wx.Panel(self)#Создайте холст, затем создайте ленту и поместите ее на холст #Создайте заголовок и поместите его на панель self.title=wx.StaticText(panel,label='Simple Translator ')#Создайте статический текст и поместите его на панель self.translate=wx.StaticT ext(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= 'Закрыть')#Кнопка привязки компонент, щелкните, чтобы вызвать функцию закрытия self.button_shutdown.Bind(wx.EVT_BUTTON,self.OnclickEvent)container_one=wx.BoxSizer(wx.HORIZONTAL)#Поместите статический текст и текстовое поле ввода в этот BoxSizerContainer_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,proportion=0,flag=wx.ALIGN_CENTER,border=4)container_two.Add(self. button_shutdown,proportion=0,flag=wx.ALIGN_CENTER,border=4)#Создайте вертикально расположенный BoxSizers=wx.BoxSizer(wx.VERTICAL)#Поместите все вышеуказанное содержимое в этот BoxSizer sizers.Add (self.t itle,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)си zers.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://faNY.youdao.com/translate?smartresult=dict&smartresult=ruledata={}data['i']=urnmdata['from']='AUTO'data['to'] ='АВТО'данные ['smartresult']='dict'data['client']='fanyideskweb'data['salt']='15823411455528'data['sign']='d03024a90896a5eb31a74a9344657b0e'data['doctype']='json' data['version']='2.1'data['keyfrom']='faNY.web'data['action']='FY_BY_REALTlME'data=urllib.parse.urlencode(data).encode('utf-8' )r=urllib.request.Req uest(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')re sponse=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,'Translator') defOnclickEvent(self,e):self.Destroy()if__name__==__main__:app=wx.App()frame=MyFrame()frame. ()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')#Bind button event, нажмите, чтобы вызвать функцию закрытия self.button_shutdown.Bind(wx.EVT_BUTTON,self.OnclickEvent)
Мы привязали события к кнопкам перевода и закрытия соответственно. При нажатии будут срабатывать соответствующие функции. Давайте проанализируем функции, функция кнопки закрытия относительно проста, то есть нажмите кнопку, чтобы закрыть окно.
defOnclickEvent(self,e):self.Destroy()
Когда мы нажимаем кнопку перевода, запускается функция перевода. Подробное содержание функции перевода можно узнать в предыдущем разделе. Здесь мы в основном передаем параметр.
urnm=self.tran_slate.GetValue()
Передайте информацию, введенную в графическом интерфейсе, в данные.
данные['i']=urnm
Это соответствует содержимому, которое мы ввели в предыдущем разделе. Наконец, посмотрите на эту строку кода.
wx.MessageBox('Результат перевода: %s'%result,'Переводчик')
Мы возвращаем результаты перевода через окно, реализуя таким образом функцию перевода.
Наконец мы подошли к тестированию нашего переводчика.
Фактический боевой контент в этом разделе относительно простой, в основном сочетающий в себе программирование графического интерфейса и контент сканера. Если вам интересно, вы также можете объединить базу данных для завершения фактического боевого контента. В следующем реальном бою база данных будет объединена для дальнейшего завершения фактического. боевое содержание.