Feb-04-2018, 03:06 AM
I use wx.html2 as browser in my python 3.6.2 script working ok. But when I browse a Yahoo Finance website, it says the component is not supported by the browser. Is wx.html2 an old module or needs upgrade? Thanks.
wx.html2
|
Feb-04-2018, 03:06 AM
I use wx.html2 as browser in my python 3.6.2 script working ok. But when I browse a Yahoo Finance website, it says the component is not supported by the browser. Is wx.html2 an old module or needs upgrade? Thanks.
Feb-04-2018, 06:22 AM
There is a new browser module available in phoenix (for python 3): https://wxpython.org/Phoenix/docs/html/w...kCtrl.html
Take a look and perhaps try it out. Here's the demo code: #!/usr/bin/env python import wx import os import sys try: dirName = os.path.dirname(os.path.abspath(__file__)) except: dirName = os.path.dirname(os.path.abspath(sys.argv[0])) sys.path.append(os.path.split(dirName)[0]) try: from agw import hyperlink as hl except ImportError: # if it's not there locally, try the wxPython lib. import wx.lib.agw.hyperlink as hl #---------------------------------------------------------------------- class TestPanel(wx.Panel): def __init__(self, parent, log): self.log = log wx.Panel.__init__(self, parent, -1) self.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)) sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) # Creator credits text1 = wx.StaticText(self, -1, "HyperLinkCtrl Example By Andrea Gavana") text1.SetFont(wx.Font(9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, 'Verdana')) sizer.Add((0,10)) sizer.Add(text1, 0, wx.LEFT | wx.TOP | wx.BOTTOM, 10) text2 = wx.StaticText(self, -1, "Latest Revision: 11 May 2005") text2.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, 'Verdana')) sizer.Add(text2, 0, wx.LEFT, 10) sizer.Add((0,25)) # Default Web links: self._hyper1 = hl.HyperLinkCtrl(self, wx.ID_ANY, "wxPython Main Page", URL="http://www.wxpython.org/") sizer.Add(self._hyper1, 0, wx.ALL, 10) # Web link with underline rollovers, opens in window self._hyper2 = hl.HyperLinkCtrl(self, wx.ID_ANY, "My Home Page", URL="http://xoomer.virgilio.it/infinity77/") sizer.Add(self._hyper2, 0, wx.ALL, 10) self._hyper2.Bind(hl.EVT_HYPERLINK_MIDDLE, self.OnMiddleLink) self._hyper2.AutoBrowse(False) self._hyper2.SetColours("BLUE", "BLUE", "BLUE") self._hyper2.EnableRollover(True) self._hyper2.SetUnderlines(False, False, True) self._hyper2.SetBold(True) self._hyper2.OpenInSameWindow(True) # middle click to open in window self._hyper2.SetToolTip(wx.ToolTip("Middle-click to open in browser window")) self._hyper2.UpdateLink() # Intense link examples.. self._hyper3 = hl.HyperLinkCtrl(self, wx.ID_ANY, "wxPython Mail Archive", URL="http://lists.wxwidgets.org/") sizer.Add(self._hyper3, 0, wx.ALL, 10) self._hyper3.Bind(hl.EVT_HYPERLINK_RIGHT, self.OnRightLink) self._hyper3.SetLinkCursor(wx.CURSOR_QUESTION_ARROW) self._hyper3.SetColours("DARK GREEN", "RED", "NAVY") self._hyper3.SetUnderlines(False, False, False) self._hyper3.EnableRollover(True) self._hyper3.SetBold(True) self._hyper3.DoPopup(False) self._hyper3.UpdateLink() self._hyper4 = hl.HyperLinkCtrl(self, wx.ID_ANY, "Open Google In Current Browser Window?", URL="http://www.google.com") sizer.Add(self._hyper4, 0, wx.ALL, 10) self._hyper4.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLink) self._hyper4.SetToolTip(wx.ToolTip("Click link for yes, no, cancel dialog")) self._hyper4.AutoBrowse(False) def OnLink(self, event): # Goto URL, demonstrates attempt to open link in current window: strs = "Open Google In Current Browser Window " strs = strs + "(NO Opens Google In Another Browser Window)?" nResult = wx.MessageBox(strs, "HyperLinkCtrl", wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION, self) if nResult == wx.YES: self._hyper4.GotoURL("http://www.google.com", True, True) elif nResult == wx.NO: self._hyper4.GotoURL("http://www.google.com", True, False) def OnRightLink(self, event): pos = self._hyper3.GetPosition() + event.GetPosition() menuPopUp = wx.Menu("Having a nice day?") ID_MENU_YES = wx.NewId() ID_MENU_NO = wx.NewId() menuPopUp.Append(ID_MENU_YES, "Yes, absolutely!") menuPopUp.Append(ID_MENU_NO, "I've had better") self.PopupMenu(menuPopUp) menuPopUp.Destroy() def OnMiddleLink(self, event): self._hyper2.GotoURL("http://xoomer.virgilio.it/infinity77/", True, True) #---------------------------------------------------------------------- def runTest(frame, nb, log): win = TestPanel(nb, log) return win #---------------------------------------------------------------------- overview = hl.__doc__ if __name__ == '__main__': import sys,os import run run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])You'll need run.py as well: #!/usr/bin/env python #---------------------------------------------------------------------------- # Name: run.py # Purpose: Simple framework for running individual demos # # Author: Robin Dunn # # Created: 6-March-2000 # Copyright: (c) 2000-2017 by Total Control Software # Licence: wxWindows license #---------------------------------------------------------------------------- """ This program will load and run one of the individual demos in this directory within its own frame window. Just specify the module name on the command line. """ import wx import wx.lib.inspection import wx.lib.mixins.inspection import sys, os # stuff for debugging print("Python %s" % sys.version) print("wx.version: %s" % wx.version()) ##print("pid: %s" % os.getpid()); input("Press Enter...") assertMode = wx.APP_ASSERT_DIALOG ##assertMode = wx.APP_ASSERT_EXCEPTION #---------------------------------------------------------------------------- class Log: def WriteText(self, text): if text[-1:] == '\n': text = text[:-1] wx.LogMessage(text) write = WriteText class RunDemoApp(wx.App, wx.lib.mixins.inspection.InspectionMixin): def __init__(self, name, module, useShell): self.name = name self.demoModule = module self.useShell = useShell wx.App.__init__(self, redirect=False) def OnInit(self): wx.Log.SetActiveTarget(wx.LogStderr()) self.SetAssertMode(assertMode) self.InitInspection() # for the InspectionMixin base class frame = wx.Frame(None, -1, "RunDemo: " + self.name, pos=(50,50), size=(200,100), style=wx.DEFAULT_FRAME_STYLE, name="run a sample") frame.CreateStatusBar() menuBar = wx.MenuBar() menu = wx.Menu() item = menu.Append(-1, "&Widget Inspector\tF6", "Show the wxPython Widget Inspection Tool") self.Bind(wx.EVT_MENU, self.OnWidgetInspector, item) item = menu.Append(wx.ID_EXIT, "E&xit\tCtrl-Q", "Exit demo") self.Bind(wx.EVT_MENU, self.OnExitApp, item) menuBar.Append(menu, "&File") ns = {} ns['wx'] = wx ns['app'] = self ns['module'] = self.demoModule ns['frame'] = frame frame.SetMenuBar(menuBar) frame.Show(True) frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame) win = self.demoModule.runTest(frame, frame, Log()) # a window will be returned if the demo does not create # its own top-level window if win: # so set the frame to a good size for showing stuff frame.SetSize((640, 480)) win.SetFocus() self.window = win ns['win'] = win frect = frame.GetRect() else: # It was probably a dialog or something that is already # gone, so we're done. frame.Destroy() return True self.SetTopWindow(frame) self.frame = frame #wx.Log.SetActiveTarget(wx.LogStderr()) #wx.Log.SetTraceMask(wx.TraceMessages) if self.useShell: # Make a PyShell window, and position it below our test window from wx import py shell = py.shell.ShellFrame(None, locals=ns) frect.OffsetXY(0, frect.height) frect.height = 400 shell.SetRect(frect) shell.Show() # Hook the close event of the test window so that we close # the shell at the same time def CloseShell(evt): if shell: shell.Close() evt.Skip() frame.Bind(wx.EVT_CLOSE, CloseShell) return True def OnExitApp(self, evt): self.frame.Close(True) def OnCloseFrame(self, evt): if hasattr(self, "window") and hasattr(self.window, "ShutdownDemo"): self.window.ShutdownDemo() evt.Skip() def OnWidgetInspector(self, evt): wx.lib.inspection.InspectionTool().Show() #---------------------------------------------------------------------------- def main(argv): useShell = False for x in range(len(sys.argv)): if sys.argv[x] in ['--shell', '-shell', '-s']: useShell = True del sys.argv[x] break if len(argv) < 2: print("Please specify a demo module name on the command-line") raise SystemExit # ensure the CWD is the demo folder demoFolder = os.path.realpath(os.path.dirname(__file__)) os.chdir(demoFolder) sys.path.insert(0, os.path.join(demoFolder, 'agw')) sys.path.insert(0, '.') name, ext = os.path.splitext(argv[1]) module = __import__(name) app = RunDemoApp(name, module, useShell) app.MainLoop() if __name__ == "__main__": main(sys.argv) |
|
Possibly Related Threads… | |||||
Thread | Author | Replies | Views | Last Post | |
Set wx.html2.WebView invisible | ian | 1 | 2,161 |
May-12-2018, 08:33 AM Last Post: Weave |
|
wx.html2.WebView Methods | ian | 4 | 3,640 |
Apr-27-2018, 05:36 PM Last Post: Larz60+ |