如何使用 wxPython 将带有外部 link 的 HTML 文件加载到 CSS 文件?

How to load HTML file with external link to CSS file with wxPython?

我正在尝试使用 wx.html.HtmlWindow 加载 Html 文件。 Html 文件链接到外部样式 sheet (CSS) 文件。 问题是 Html window 只显示没有样式(颜色、字体等)的普通 Html 文件 我该如何解决这个问题?

HTML代码:

<html>
<head>
<title>Embedded Style Sample</title>
<link href="E:\pythonGUI\styles.css" rel="stylesheet" type="text/css"/></head>
<body>
<h1>Embedded Style Sample testing</h1>
<h2>Next Line</h2>
</body>
</html>

CSS代码:

h1{
    color: #0000FF;
  }
  h2{
    color: #00CCFF;
  }

Python代码:

import  wx 
import  wx.html
import  wx.html2 
  
class MyHtmlFrame(wx.Frame):
    def __init__(self, parent, title): 
        wx.Frame.__init__(
            self, 
            parent, 
            -1, 
            title, 
            size = (600,400)
        )
        html = wx.html.HtmlWindow(self) 
        html.LoadPage("E:\pythonGUI\newtest.html") 

app = wx.App()  
frm = MyHtmlFrame(None, "Simple HTML File Viewer")  
frm.Show()  
app.MainLoop()

Html 文件显示在 HTML window:

如果您想要完整的 HTML/CSS 支持以及 Javascript 引擎,请考虑改用 wx.html2.WebView

来自 wxpython 文档:

wx.html doesn’t really have CSS support but it does support a few simple styles: you can use "text-align", "width", "vertical-align" and "background" with all elements and for SPAN elements a few other styles are additionally recognized:

color

font-family

font-size (only in point units)

font-style (only “oblique”, “italic” and “normal” values are supported)

font-weight (only “bold” and “normal” values are supported)

text-decoration (only “underline” value is supported)

使用 wx.html2.WebView 代替 wx.html.HtmlWindow:

import wx
import wx.html2

class About(wx.Frame):
    def __init__(self):
        wx.Panel.__init__(self,None,-1,title="Title",size=(700,700))

class Test(wx.Frame):
    def __init__(self,title,pos,size):
        wx.Frame.__init__(self,None,-1,title,pos,size)
        self.tester=wx.html2.WebView.New(self)
        self.tester.LoadURL("E:\pythonGUI\newtest.html")

if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = Test("html2 web view", (20, 20), (800, 600))
    frame.Show()
    app.MainLoop()