李信然 孫洪波 梅良才
(北京理工大學珠海學院 廣東省珠海市 519088)
計算機網(wǎng)絡(luò)的飛快發(fā)展使得各個領(lǐng)域所需求的人才也各色各樣。而在現(xiàn)在的開放時代,英文也成為我們生活的一部分,我們在很多情況下都避免不了接觸英文單詞和句子,中英互譯助手便是服務于這樣的各種想學英文和在學英文的人群,隨時隨地任意的中英互譯在很多層面提高了用戶的工作效率也擴大了用戶的詞匯量。
本文主要從以下三個任務來設(shè)計中英互譯助手:
(1)設(shè)計中英互譯助手的窗體規(guī)格,個性化整體的布局和背景字體以及設(shè)計好各個菜單項和安排好窗體按鈕及文本框的位置大小。
(2)登錄360 翻譯網(wǎng)址,利用python 爬蟲爬取網(wǎng)頁源代碼中與中英互譯助手相關(guān)的數(shù)據(jù)內(nèi)容并進行封裝。
(3)調(diào)用函數(shù)將按鈕功能與爬蟲爬取結(jié)果進行結(jié)合綁定,同樣調(diào)用函數(shù)設(shè)置各個菜單項的實現(xiàn)結(jié)果,將其與對應內(nèi)容綁定。最后將代碼進行打包成一個程序。
任務一要求個性化設(shè)計窗體,需要導入wxPython 工具包,wxPython 是Python 語言的一套優(yōu)秀的GUI 圖形庫,允許Python 程序員很方便的創(chuàng)建完整的、功能健全的GUI 用戶界面。wxPython可以直接通過在Windows 系統(tǒng)下的cmd 命令下輸入pip install-U wxPython 進行下載安裝,在wxPython 的官方網(wǎng)址:http://wxpython.org 中可以查閱到wx.Frame 框架和其各個控件的使用方法。
任務二Python 爬蟲爬取網(wǎng)頁數(shù)據(jù)時需要用到urllib、urllib3 和requests 這三種常見模塊實現(xiàn)HTTP 網(wǎng)絡(luò)請求,這里我們使用的是requests 模塊。Requests 模塊可以直接使用pip install requests 進行安裝。Requests 常見的功能特性有自動內(nèi)容解碼、自動解壓、HTTP 代理支持、連接超時、分塊請求等。爬蟲爬取網(wǎng)頁源代碼時需要對數(shù)據(jù)進行解析,這時我們可以使用json 常見組件中的json.cn 對我們需要的response 內(nèi)容進行在線解析以便我們爬取數(shù)據(jù)。
設(shè)計窗體先用wx.Frame 框架構(gòu)建一個整體,大小尺寸設(shè)為650,450;用wx.StaticText 文本類控件將大標題設(shè)置為Translation Helper,另設(shè)副標題為—By Ivonne 以及輸入內(nèi)容文本和輸出結(jié)果文本;用wx.TextCrl 文本框控件設(shè)置與輸入文本和輸出文本相對應的文本框;使用time 模塊自動更新當天日期并用SetValue 獲取時間輸出;wx.Button 用于設(shè)置“翻譯”“清除”按鈕,wxPython 的控件均可用pos 參數(shù)調(diào)整其位置。
核心代碼:
窗體的個性化處理是影響用戶體驗最必不可少的部分。直接設(shè)計窗體的背景顏色可以用panel.SetBackgroundColour(),括號內(nèi)填上喜歡的顏色的英文或十六進制顏色編碼,同樣以xx.SetBackgroundColour()可以設(shè)置按鈕的顏色;文本和按鈕的字體的大小和樣式使用wx.Font()進行設(shè)計;wxPython 中BoxSizer 布局是在一條水平線和垂直線上的窗口部件的布局,當尺寸改變時,控制窗口部件的行為十分靈活,可用于任何類型的布局。由此我們可以使用一個BoxSizer 布局設(shè)置添加橫縱向容器,使得當窗口最大化時和還原時部件位置仍處于中心處。
窗體設(shè)計中wxPython 有菜單控件用于設(shè)計菜單。創(chuàng)建一個菜單欄用menuBar=wx.MenuBar(),接著創(chuàng)建菜單用menu=wx.Menu(),分別用menu.Append()將創(chuàng)建的四個菜單項 ‘新建’、‘歷史記錄’、‘關(guān)于’、‘退出’添加到菜單欄中;綁定各個事件處理用self.Bind(),用menu.AppendSeparator()在菜單項之間添加分割線,用參數(shù)text=“名稱/t 快捷鍵”進行快捷鍵的注冊,最后設(shè)置窗口框架的菜單欄為menuBar 用self.SetMenuBar(menuBar)。
Python 爬蟲爬取360 翻譯網(wǎng)頁時先登錄官方網(wǎng)址:http://fanyi.so.com/#。在輸入框隨意輸入某個詞,接著查詢其網(wǎng)頁源代碼,查詢到網(wǎng)站的url 為https://fanyi.so.com/index/search 后復制headers 設(shè)置請求頭進行偽裝訪問。
請求頭示意圖:
將response 部分的數(shù)據(jù)復制到j(luò)son.cn 組件上進行解析便可獲得輸入內(nèi)容和翻譯結(jié)果在網(wǎng)頁源代碼上的位置標簽為‘data’‘fanyi’。
由標簽所在位置進行條件判斷,判斷輸入框輸入內(nèi)容為中文還是英文,實現(xiàn)程序中譯英和英譯中的功能。
核心代碼:
將‘翻譯’按鈕與360 翻譯網(wǎng)頁爬取的數(shù)據(jù)進行事件綁定用self.bt_translate.Bind()這一控件,調(diào)用函數(shù)將兩者結(jié)合,用self.text_result.SetValue()將輸出內(nèi)容保存在文本框中,實現(xiàn)點擊翻譯按鈕則在輸出框中出現(xiàn)翻譯結(jié)果;綁定‘清除’按鈕實現(xiàn)點擊清除按鈕后輸入內(nèi)容和輸出框內(nèi)容全部清空;其中判斷并提示輸入內(nèi)容是否為空采用wx.MessageBox()控件實現(xiàn)。
如圖1所示,調(diào)用函數(shù)將各個菜單項與其相對應的結(jié)果進行事件處理綁定。用xxx.SetValue()實現(xiàn)點擊新建菜單項則輸入框、輸出框、日期全部清除的功能;使用wx.MessageBox()將查詢?nèi)掌?、查詢?nèi)容和翻譯結(jié)果進行存儲,實現(xiàn)點擊歷史記錄菜單項時彈出剛剛查詢到的內(nèi)容,有助于操作失誤或臨時忘記內(nèi)容的用戶進行查詢;同樣用wx.MessageBox()實現(xiàn)點擊關(guān)于菜單項彈出有關(guān)用戶使用這款翻譯助手的說明;用self.Close()實現(xiàn)點擊退出菜單項則退出翻譯助手的使用。
圖1
核心代碼:
這款中英互譯軟件適用在各個領(lǐng)域的人們,隨時隨地的中英互譯為人們?nèi)粘I钐峁┝艘欢ǔ潭鹊谋憷?。這次的翻譯助手以簡約淺藍色為基調(diào),支持單一詞語或多個詞組的翻譯,只要輸入內(nèi)容便可以實時進行翻譯,在另一方面,無形中豐富了國民的詞匯存儲量。
這款中英互譯助手在翻譯功能方面能正常實現(xiàn)中譯英和英譯中,菜單欄的歷史記錄可以幫助用戶找到自己需要的尋找的內(nèi)容,避免了因為手滑和操作失誤等原因而重新開始的漏洞,新建翻譯內(nèi)容時將時間一起清除可以讓用戶自行創(chuàng)建自己登錄翻譯助手的歷史記錄時間,使用說明能幫助用戶盡量避免在使用過程中用不適當?shù)姆椒▽е虏樵儾坏阶约合胍慕Y(jié)果。