Как загрузить HTML-файл с внешней ссылкой на CSS-файл с помощью wxPython?

#python #html #css #wxpython #wxhtmlwindow

#python #HTML #css #wxpython #wxhtmlwindow

Вопрос:

Я пытаюсь загрузить HTML-файл с wx.html .HtmlWindow. Html-файл связан с файлом внешней таблицы стилей (CSS). Проблема в том, что в окне Html отображается только обычный Html-файл без оформления (цвета, шрифты и т. Д.) Как я могу решить эту проблему?

HTML-код:

 <html>
<head>
<title>Embedded Style Sample</title>
<link href="E:pythonGUIstyles.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;
  }
  

html-файл в браузере

Код 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:

html-файл отображается в окне HTML

Ответ №1:

Если вам нужна полная поддержка HTML / CSS, а также движок Javascript, рассмотрите возможность использования вместо этого wx.html2.WebView.

Из документов wxpython:

wx.html на самом деле у него нет поддержки CSS, но он поддерживает несколько простых стилей: вы можете использовать «выравнивание текста», «ширина», «выравнивание по вертикали» и «фон» для всех элементов, а для элементов SPAN дополнительно распознаются несколько других стилей:

 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)
  

Ответ №2:

Используя 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()