Embedding IPython console in Tkinter frame - python

I was working on a PyQt application that had an embedded JupyterWidget that would allow a user to use an IPython console to interact with certain variables that were being displayed. However, it was recently suggested that we switch to Tkinter graphics instead of Qt because of Tkinter's out of the box support in Python.
Is there a Tkinter equivalent implementation of the JupyterWidget in PyQt? The best I can seem to find is https://github.com/ipython/ipython/wiki/Trash:-Old-Embedding-Tkinter but this uses a very old version of IPython where almost all of the function calls are deprecated or removed entirely.
I had also tried this but was unable to make it so that changes in the subprocess' variables were reflected in the overall program.

Related

Embed python as scripting language on my python application

I'm trying to make a python GUI application that handles some sort of data. Then I expect to make the user capable of manipulating that data using python scripts, form within the GUI, using a script interpreter with the data exposed as pre-existing objects. Pretty much like VBA is embedded in MSWord or the way you can embed python on a C application (see here).
Is there any technique or library to do this?
Has this been achieved in some project before?
One way to do it would be to write a GUI in PyQt, and then embed an iPython console inside the GUI as a GUI widget.
Check out this answer:
Embedding IPython Qt console in a PyQt application
and a couple other suggestions here:
https://github.com/ipython/ipython/issues/9508
A different non-PyQt approach is described here:
https://www.pythoncentral.io/embed-interactive-python-interpreter-console/

Python curses window flickering when resizing terminal

This is my first post on stack overflow so I hope I'm doing it properly.
I am currently working on a Terminal User Interface for python applications. I know that there are many ready-to-use libraries such as npyscreen out there, but I wantend to create one as programming excercice. In particular, I wanted to to play with some architectural patterns to learn them.
All that said, I'm currently facing several problems with python curses library, that I'm using as low level interface to the terminal.
The problems arise when I try to resize my terminal. As you can see from the code (see below), I handle the terminal resizing in the main loop, invoking the getmaxyx()() method of my curses window and redrawing what is on the screen accordingly.
The problem is that the screen seems to flicker when I try to resize the terminal.
Moreover, my "curses application" works fine on MacOS but totally crashes on windows (even after installing windows curses).
To handle that I tried to re-write the low-level interfice by using the blessed library. It solved the windows crashing problem, but the flickering still remains.
I can not figure out what the problem is.
Fore those wishing to help me, here follows the github page of the project: Terminal GUI on GitHub
Thank you in advance.
With curses, there's (at least) 3 things to look for:
ncurses can handle SIGWINCH (PDCurses may not)
some Python configurations interfere with ncurses receiving SIGWINCH. If your program never receives KEY_RESIZE (which it's not checking for...), then it's time to file a bug report for Python to get that fixed.
some programs don't actively read keyboard input (and if KEY_RESIZE isn't read, ncurses won't update the screensize. That would make the program crash.

How to unimport Tcl/Tk after running a Tkinter program

We are creating a program that uses two different libraries sequentially: Tkinter and WxPython. Once the script for Tkinter is initialized, the backend library Tcl/Tk prevents the execution of any Wx functions. We want to be able to remove all traces of memory of Tcl/Tk before we launch our script that uses Wx.
We have tried deleting all associated Tkinter references using the sys module, but we have had no success. We have also tried using the multiprocessing module to isolate the frameworks to separate processes, but this was unachievable as a GUI cannot be initialized through a sub-process.
Our goal is to package this into a single standalone application.

Python custom GUI

I googled and search stackoverflow before asking this question
Answers that I don't expect:
wxWidgets is the best Python GUIUse TkInter (BIM) for GUI development.
Q. How to make a GUI without using any module/library? i.e make a GUI from scratch. Modules like tkinter not allowed.
I've made several GUIs from scratch using SDL which is a low level drawing library. The advantage of doing that is that it will look exactly the same on any platform down to the pixel and you can get it to work on embedded systems. Full screen GUIs are really easy too. Disadvantages are that it is a lot of work.
In python the pygame library wraps SDL so you would use that, and in fact that is how I made the GUI for a lab instrument which had a large colour LCD screen. The controller ran linux, but not X-windows.
pygame is an extra library, yes, but I can't think of a way of making a GUI with only what python provides.
The easiest GUI to make without "module/library" is a web-based one. I.e. generate HTML with Javascript from your Python code, and let the Javascript interact via AJAX with your Python app. This can be implemented without too much effort with just the standard Python library (and some JS code, of course), or with modules that don't require "heavy" installation of platform-specific extensions.

PyGTK and visual-python

I'm developing an application with PyGTK that will make use of visual-python's 3d drawings and animations, but I can't get both libraries to work together: they either hung up when I close the Gtk window or they get stuck when I run the application.
I've tried with threads and they run side-by-side, but when I close visual-python's window this kills python's interpreter, raising a Segmentation Fault.
Has anyone been able to use visual-python from a PyGtk app?
This is a non-trivial problem given the way that VPython wants to work, but there is an example in the contributed programs section of the VPython web site that shows how to embed VPython into a wxPython application, so perhaps you can look over that code and determine what you would need to do to perform the same magic in PyGTK.

Categories