Mar-03-2019, 06:10 AM
(This post was last modified: Mar-03-2019, 06:39 AM by jttolleson.)
Yes, Hello again ---Jayson:
wxPython will work in with IPython in Python3. Especially, in deb or ubuntu
and this will be my direction, however the same problem exists. My x-display in web.
I will post again as this thread continues, with a simple script that will have the same issue. the x display.
Ok, well here we go: IPython
sudo nohup python3 /var/www/webserver3.py &
I hope we still can have an open mind about this being fun and useful structure to run interactive web gui scripting which would be a PLUS...
and this becomes a complicated question: b/c sudo IPython /var/www/cgi-bin/lftr/wxgui.py --gui=wx
can be run as something like this: sudo python3 /var/www/cgi-bin/lftr/wxgui.py if it is including some IPython ----
so I set the Display Environment variable to localhost:0 with no noticible effect.
wxPython will work in with IPython in Python3. Especially, in deb or ubuntu
and this will be my direction, however the same problem exists. My x-display in web.
I will post again as this thread continues, with a simple script that will have the same issue. the x display.
Ok, well here we go: IPython
sudo nohup python3 /var/www/webserver3.py &
import os, sys from http.server import HTTPServer, CGIHTTPRequestHandler import ssl webdir = '/var/www/' port = 443 os.chdir(webdir) srvaddr=('', port) srvobj = HTTPServer(srvaddr, CGIHTTPRequestHandler) srvobj.socket = ssl.wrap_socket (srvobj.socket, keyfile='/var/security/35.236.122.135.key', certfile='/var/security/35.236.122.135.crt', server_side=True) CGIHTTPRequestHandler.have_fork=False # Force the use of a subprocess srvobj.serve_forever()sudo python3 /var/www/cgi-bin/lftr/wxgui.py
#!/usr/bin/env python3 import cgitb cgitb.enable """ A Simple wx example to test IPython's event loop integration. To run this do: In [5]: %gui wx # or start IPython with '--gui wx' In [6]: %run gui-wx.py Ref: Modified from wxPython source code wxPython/samples/simple/simple.py """ import wx class MyFrame(wx.Frame): """ This is MyFrame. It just shows a few controls on a wxPanel, and has a simple menu. """ def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, pos=(150, 150), size=(350, 200)) # Create the menubar menuBar = wx.MenuBar() # and a menu menu = wx.Menu() # add an item to the menu, using \tKeyName automatically # creates an accelerator, the third param is some help text # that will show up in the statusbar menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample") # bind the menu event to an event handler self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT) # and put the menu on the menubar menuBar.Append(menu, "&File") self.SetMenuBar(menuBar) self.CreateStatusBar() # Now create the Panel to put the other controls on. panel = wx.Panel(self) # and a few controls text = wx.StaticText(panel, -1, "Hello World!") text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)) text.SetSize(text.GetBestSize()) btn = wx.Button(panel, -1, "Close") funbtn = wx.Button(panel, -1, "Just for fun...") # bind the button events to handlers self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn) self.Bind(wx.EVT_BUTTON, self.OnFunButton, funbtn) # Use a sizer to layout the controls, stacked vertically and with # a 10 pixel border around each sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(text, 0, wx.ALL, 10) sizer.Add(btn, 0, wx.ALL, 10) sizer.Add(funbtn, 0, wx.ALL, 10) panel.SetSizer(sizer) panel.Layout() def OnTimeToClose(self, evt): """Event handler for the button click.""" print("See ya later!") self.Close() def OnFunButton(self, evt): """Event handler for the button click.""" print("Having fun yet?") class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, "Simple wxPython App") self.SetTopWindow(frame) print("Print statements go to this stdout window by default.") frame.Show(True) return True if __name__ == '__main__': app = wx.GetApp() if app is None: app = MyApp(redirect=False, clearSigInt=False) else: frame = MyFrame(None, "Simple wxPython App") app.SetTopWindow(frame) print("Print statements go to this stdout window by default.") frame.Show(True) try: from IPython.lib.inputhook import enable_gui enable_gui('wx', app) except ImportError: app.MainLoop()now this code: will run IPython in a .py script on the cgi-server
#!/usr/bin/env python3 import cgitb cgitb.enable import IPython IPython.start_ipython(argv=[])
I hope we still can have an open mind about this being fun and useful structure to run interactive web gui scripting which would be a PLUS...
and this becomes a complicated question: b/c sudo IPython /var/www/cgi-bin/lftr/wxgui.py --gui=wx
can be run as something like this: sudo python3 /var/www/cgi-bin/lftr/wxgui.py if it is including some IPython ----
#!/usr/bin/env python3 import cgitb cgitb.enable import IPython IPython.start_ipython(argv=[]) # this will start IPython, however i am unsure how to input the entire script import IPython.display #this will access display for a gui of wx hopefully gui=wx #incorrect code import wx class MyFrame(wx.Frame): """ This is MyFrame. It just shows a few controls on a wxPanel, and has a simple menu. """ def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, pos=(150, 150), size=(350, 200)) # Create the menubar menuBar = wx.MenuBar() # and a menu menu = wx.Menu() # add an item to the menu, using \tKeyName automatically # creates an accelerator, the third param is some help text # that will show up in the statusbar menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample") # bind the menu event to an event handler self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT) # and put the menu on the menubar menuBar.Append(menu, "&File") self.SetMenuBar(menuBar) self.CreateStatusBar() # Now create the Panel to put the other controls on. panel = wx.Panel(self) # and a few controls text = wx.StaticText(panel, -1, "Hello World!") text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)) text.SetSize(text.GetBestSize()) btn = wx.Button(panel, -1, "Close") funbtn = wx.Button(panel, -1, "Just for fun...") # bind the button events to handlers self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn) self.Bind(wx.EVT_BUTTON, self.OnFunButton, funbtn) # Use a sizer to layout the controls, stacked vertically and with # a 10 pixel border around each sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(text, 0, wx.ALL, 10) sizer.Add(btn, 0, wx.ALL, 10) sizer.Add(funbtn, 0, wx.ALL, 10) panel.SetSizer(sizer) panel.Layout() def OnTimeToClose(self, evt): """Event handler for the button click.""" print("See ya later!") self.Close() def OnFunButton(self, evt): """Event handler for the button click.""" print("Having fun yet?") class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, "Simple wxPython App") self.SetTopWindow(frame) print("Print statements go to this stdout window by default.") frame.Show(True) return True if __name__ == '__main__': app = wx.GetApp() if app is None: app = MyApp(redirect=False, clearSigInt=False) else: frame = MyFrame(None, "Simple wxPython App") app.SetTopWindow(frame) print("Print statements go to this stdout window by default.") frame.Show(True) try: from IPython.lib.inputhook import enable_gui enable_gui('wx', app) except ImportError: app.MainLoop()anyone? - - - for a round of direction or help??? i still get the display error no matter what
so I set the Display Environment variable to localhost:0 with no noticible effect.