本期教程給大家更新絕對讓你大喫一驚的效果—web嵌入GUI
隨着Web技術的蓬勃發展,以網頁形式在瀏覽器上顯示圖表已經逐漸成爲一種主流的形式。
網頁的實現是由HTML、CSS和Javascript三者相結合完成的,HTML負責網頁的結構,CSS渲染網頁元素的樣式,而Javascript給網頁增加了動態的行爲,總體來看,網頁版本的圖表在顯示效果上可以達到更加生動、炫酷的要求。
不過話說回來,對於本地的交互來說,GUI使用起來更爲便捷。那麼,能不能魚和熊掌兼得呢?本文來介紹下如何在Python的GUI工具中嵌入HTML頁面。
wxPython的wx.html和wx.html2模塊支持解析和顯示HTML文件內容。
html.HtmlWindow對象是一個通用的HTML瀏覽器,但不是一個全功能的瀏覽器,所以支持的功能有限。
比如使用SetPage()設置嵌入一副HTML頁面,如下所示:
import wx.html as html
class MyFrame(wx.Frame):
def __init__(self,parent=None):
super(MyFrame, self).__init__(parent, -1, "HTML文件", size=(450, 250))
htmlwin = html.HtmlWindow(self)
#htmlwin.LoadPage("http://www.baidu.com")
htmlwin.SetPage("""
<html>
<body bgcolor="#fdd22f">
<h1>這是標題</h1>
<b style="color:blue">用Python量化交易</b>
<p> 通過 rbg 值設置背景顏色 </p>
<br/>
<p>
這是第一個段落。
</p>
<i>這是斜體文本</i>
</body>
<html>
""")
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
當然了,就像剛纔所說的,和真正的瀏覽器差距還是很大的,它只支持HTML標準的一個子集,不支持Javascript或者CSS。我們用LoadPage()加載百度主頁時會顯示成這個樣子,如下所示:
但是wx.html相對輕量級並且沒有平臺依賴性。我們換成了wx.html2,它支持全特性的HTML渲染組件,包括Javascript和CSS,另一方面也根據不同的平臺後端,會表現出不同的行爲。
我們使用wx.html2.WebView.New中的 LoadURL加載百度官網頁面,如下所示:
class MyBrowser(wx.Dialog):
def __init__(self, *args, **kwds):
wx.Dialog.__init__(self, *args, **kwds)
sizer = wx.BoxSizer(wx.VERTICAL)
self.browser = wx.html2.WebView.New(self)
sizer.Add(self.browser, 1, wx.EXPAND, 10)
self.SetSizer(sizer)
self.SetSize((700, 700))
if __name__ == '__main__':
app = wx.App()
dialog = MyBrowser(None, -1)
dialog.browser.LoadURL("http://www.baidu.com/?tn=62095104_10_oem_dg") # 加載頁面
dialog.Show()
app.MainLoop()
這麼一來,之前我們顯示股票行情GUI是這樣子的,如下所示:
後來我們發現pyecharts的顯示效果更加炫酷啊,如下所示:
於是我們把pyecharts生成的HTML文件加載到wxPython中,變成這樣了,如下所示:
關於以上內容更多的探討,夥伴們可以評論區留言,Python系列詳細視頻教程也整理好了。需要的夥伴,回覆:Python教程,即可領取全套Python視頻教程!!
Python 900集全套視頻教程(全家桶)
https://pan.baidu.com/s/1cU5lDWq9gh0cQ7hCnXUiGA 提取碼: m