For clarity, this works for me in wxPython 4.1.1
import wx
import wx.html2 as webview
# from wx.lib.inspection import InspectionTool
# from wx.lib.agw.flatnotebook import FlatNotebook
NotebookClass = wx.Notebook
# NotebookClass = FlatNotebook
BACKEND = webview.WebViewBackendEdge
class DVHAMainFrame(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.notebook_main_view = NotebookClass(self, wx.ID_ANY)
self.tab_keys = ['Browser 1', 'Browser 2', 'Browser 3']
print(webview.WebView.IsBackendAvailable(BACKEND))
for key in self.tab_keys:
func = self.make_web_page if key == self.tab_keys[0] else self.make_text_page
func(key)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.notebook_main_view, 1, wx.EXPAND, 0)
self.SetSizer(sizer)
self.Layout()
self.Center()
def make_web_page(self, title):
page = wx.Panel(self.notebook_main_view)
plot = webview.WebView.New(page, backend=BACKEND)
plot.LoadURL("http://www.google.com")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(plot, 1, wx.EXPAND)
page.SetSizer(sizer)
self.notebook_main_view.AddPage(page, title)
def make_text_page(self, title):
page = wx.Panel(self.notebook_main_view)
text = wx.StaticText(page, wx.ID_ANY, "This is just text for %s" % title)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(text, 1, wx.EXPAND)
page.SetSizer(sizer)
self.notebook_main_view.AddPage(page, title)
class MainApp(wx.App):
def OnInit(self):
self.SetAppName('DVH Analytics')
self.frame = DVHAMainFrame(None, wx.ID_ANY, "", size=(800,600))
self.SetTopWindow(self.frame)
# InspectionTool().Show()
self.frame.Show()
return True
def start():
app = MainApp()
app.MainLoop()
if __name__ == "__main__":
start()