李信然 孫洪波 梅良才
(北京理工大學珠海學院 廣東省珠海市 519088)
計算機網絡的飛快發展使得各個領域所需求的人才也各色各樣。而在現在的開放時代,英文也成為我們生活的一部分,我們在很多情況下都避免不了接觸英文單詞和句子,中英互譯助手便是服務于這樣的各種想學英文和在學英文的人群,隨時隨地任意的中英互譯在很多層面提高了用戶的工作效率也擴大了用戶的詞匯量。
本文主要從以下三個任務來設計中英互譯助手:
(1)設計中英互譯助手的窗體規格,個性化整體的布局和背景字體以及設計好各個菜單項和安排好窗體按鈕及文本框的位置大小。
(2)登錄360 翻譯網址,利用python 爬蟲爬取網頁源代碼中與中英互譯助手相關的數據內容并進行封裝。
(3)調用函數將按鈕功能與爬蟲爬取結果進行結合綁定,同樣調用函數設置各個菜單項的實現結果,將其與對應內容綁定。最后將代碼進行打包成一個程序。
任務一要求個性化設計窗體,需要導入wxPython 工具包,wxPython 是Python 語言的一套優秀的GUI 圖形庫,允許Python 程序員很方便的創建完整的、功能健全的GUI 用戶界面。wxPython可以直接通過在Windows 系統下的cmd 命令下輸入pip install-U wxPython 進行下載安裝,在wxPython 的官方網址:http://wxpython.org 中可以查閱到wx.Frame 框架和其各個控件的使用方法。
任務二Python 爬蟲爬取網頁數據時需要用到urllib、urllib3 和requests 這三種常見模塊實現HTTP 網絡請求,這里我們使用的是requests 模塊。Requests 模塊可以直接使用pip install requests 進行安裝。Requests 常見的功能特性有自動內容解碼、自動解壓、HTTP 代理支持、連接超時、分塊請求等。爬蟲爬取網頁源代碼時需要對數據進行解析,這時我們可以使用json 常見組件中的json.cn 對我們需要的response 內容進行在線解析以便我們爬取數據。
設計窗體先用wx.Frame 框架構建一個整體,大小尺寸設為650,450;用wx.StaticText 文本類控件將大標題設置為Translation Helper,另設副標題為—By Ivonne 以及輸入內容文本和輸出結果文本;用wx.TextCrl 文本框控件設置與輸入文本和輸出文本相對應的文本框;使用time 模塊自動更新當天日期并用SetValue 獲取時間輸出;wx.Button 用于設置“翻譯”“清除”按鈕,wxPython 的控件均可用pos 參數調整其位置。
核心代碼:


窗體的個性化處理是影響用戶體驗最必不可少的部分。直接設計窗體的背景顏色可以用panel.SetBackgroundColour(),括號內填上喜歡的顏色的英文或十六進制顏色編碼,同樣以xx.SetBackgroundColour()可以設置按鈕的顏色;文本和按鈕的字體的大小和樣式使用wx.Font()進行設計;wxPython 中BoxSizer 布局是在一條水平線和垂直線上的窗口部件的布局,當尺寸改變時,控制窗口部件的行為十分靈活,可用于任何類型的布局。由此我們可以使用一個BoxSizer 布局設置添加橫縱向容器,使得當窗口最大化時和還原時部件位置仍處于中心處。
窗體設計中wxPython 有菜單控件用于設計菜單。創建一個菜單欄用menuBar=wx.MenuBar(),接著創建菜單用menu=wx.Menu(),分別用menu.Append()將創建的四個菜單項 ‘新建’、‘歷史記錄’、‘關于’、‘退出’添加到菜單欄中;綁定各個事件處理用self.Bind(),用menu.AppendSeparator()在菜單項之間添加分割線,用參數text=“名稱/t 快捷鍵”進行快捷鍵的注冊,最后設置窗口框架的菜單欄為menuBar 用self.SetMenuBar(menuBar)。
Python 爬蟲爬取360 翻譯網頁時先登錄官方網址:http://fanyi.so.com/#。在輸入框隨意輸入某個詞,接著查詢其網頁源代碼,查詢到網站的url 為https://fanyi.so.com/index/search 后復制headers 設置請求頭進行偽裝訪問。
請求頭示意圖:
將response 部分的數據復制到json.cn 組件上進行解析便可獲得輸入內容和翻譯結果在網頁源代碼上的位置標簽為‘data’‘fanyi’。
由標簽所在位置進行條件判斷,判斷輸入框輸入內容為中文還是英文,實現程序中譯英和英譯中的功能。
核心代碼:

將‘翻譯’按鈕與360 翻譯網頁爬取的數據進行事件綁定用self.bt_translate.Bind()這一控件,調用函數將兩者結合,用self.text_result.SetValue()將輸出內容保存在文本框中,實現點擊翻譯按鈕則在輸出框中出現翻譯結果;綁定‘清除’按鈕實現點擊清除按鈕后輸入內容和輸出框內容全部清空;其中判斷并提示輸入內容是否為空采用wx.MessageBox()控件實現。
如圖1所示,調用函數將各個菜單項與其相對應的結果進行事件處理綁定。用xxx.SetValue()實現點擊新建菜單項則輸入框、輸出框、日期全部清除的功能;使用wx.MessageBox()將查詢日期、查詢內容和翻譯結果進行存儲,實現點擊歷史記錄菜單項時彈出剛剛查詢到的內容,有助于操作失誤或臨時忘記內容的用戶進行查詢;同樣用wx.MessageBox()實現點擊關于菜單項彈出有關用戶使用這款翻譯助手的說明;用self.Close()實現點擊退出菜單項則退出翻譯助手的使用。

圖1
核心代碼:


這款中英互譯軟件適用在各個領域的人們,隨時隨地的中英互譯為人們日常生活提供了一定程度的便利。這次的翻譯助手以簡約淺藍色為基調,支持單一詞語或多個詞組的翻譯,只要輸入內容便可以實時進行翻譯,在另一方面,無形中豐富了國民的詞匯存儲量。
這款中英互譯助手在翻譯功能方面能正常實現中譯英和英譯中,菜單欄的歷史記錄可以幫助用戶找到自己需要的尋找的內容,避免了因為手滑和操作失誤等原因而重新開始的漏洞,新建翻譯內容時將時間一起清除可以讓用戶自行創建自己登錄翻譯助手的歷史記錄時間,使用說明能幫助用戶盡量避免在使用過程中用不適當的方法導致查詢不到自己想要的結果。