通常,大多數(shù)應(yīng)用程序通過保持 HTML 簡單來解決大多數(shù)瀏覽器問題 ― 或者說,根據(jù)最低共同特性來編寫。然而,即便如此,也仍然存在字體和布局的問題,發(fā)行新瀏覽器和升級現(xiàn)有瀏覽器時,也免不了測試應(yīng)用程序的痛苦。替代方案 ― 只支持一種瀏覽器 ― 通常不是一種用戶友好的解決方案。
明顯的解決方案是在應(yīng)用程序中嵌入自己的表現(xiàn) HTML 的窗口構(gòu)件。當(dāng)然,從頭開始編寫這樣的窗口構(gòu)件工作量很大,因此,求助于預(yù)先封裝的解決方案好象是合理的。
商界有許多選擇及幾個開放源碼軟件包。本文將向您顯示如何以 Python 作為綁定的語言選擇(也支持 C++、Perl 和其它語言)使用作為 wxWindows 軟件包一部分分發(fā)的 wxHtml 窗口構(gòu)件。
雖然沒有任何 wxPython 經(jīng)驗(yàn)而熟諳 Python 的開發(fā)人員應(yīng)該能夠從頭開始,但本文還是假定您具有基本的 wxPython 知識。在本文中,我們將創(chuàng)建一個獨(dú)立的瀏覽器應(yīng)用程序,同時,保持體系結(jié)構(gòu)足夠簡單以致將瀏覽器功能遷移到現(xiàn)有的應(yīng)用程序中是一項(xiàng)簡單的任務(wù)。
世界上最基本的瀏覽器
第一步是組裝支持使用 wxHtml 窗口構(gòu)件的應(yīng)用程序所必需的最少代碼。下列代碼實(shí)現(xiàn)用 wxHtml 窗口構(gòu)件作為其主窗口內(nèi)容的基本 wxPython 應(yīng)用程序。
清單 1. 基本示例瀏覽器代碼
from wxPython.wx import *from wxPython.html import *import os,sysclass exHtmlWindow(wxHtmlWindow): def __init__(self, parent, id, frame): wxHtmlWindow.__init__(self,parent,id)class exHtmlPanel(wxPanel): def __init__(self, parent, id, frame): wxPanel.__init__(self,parent,-1) self.html = exHtmlWindow(self, -1, frame) self.box = wxBoxSizer(wxVERTICAL) self.box.Add(self.html, 1, wxGROW) self.SetSizer(self.box) self.SetAutoLayout(true)class exFrame (wxFrame): def __init__(self, parent, ID, title): wxFrame.__init__(self,parent,ID,title,wxDefaultPosition,wxSize(600,750)) panel = exHtmlPanel(self, -1, self)class exApp(wxApp): def OnInit(self): frame = exFrame(NULL, -1, "Example Browser") frame.Show(true) self.SetTopWindow(frame) return trueapp = exApp(0)app.MainLoop()
假定您已正確安裝 wxPython,那么在 Python 解釋器中運(yùn)行上述代碼將產(chǎn)生一個具有空的白面板(wxHtml 窗口構(gòu)件)的大窗口。如果出現(xiàn)任何語法錯誤,請檢查空格問題 ― 尤其是如果您將代碼剪切粘貼到解釋器或編輯器的情況。如果 Python 解釋器顯示無法導(dǎo)入 wxPython,請檢查安裝以確保安裝正確。
當(dāng)然,一啟動該瀏覽器,立刻出現(xiàn)的是:我們?nèi)鄙倌承〇|西 ... 例如裝入頁面的機(jī)制。對于某些應(yīng)用程序,這一非常基本的設(shè)置實(shí)際上可能已經(jīng)夠了 — 如果您已知道您要交付什么,那么用戶就無需選擇自己的頁面。簡單的更改是向 exHtmlPanel 傳遞額外的參數(shù),那就是您想訪問的頁面:
新聞熱點(diǎn)
疑難解答
圖片精選