Version 0.5.0+ no longer displays output after widget interaction
See original GitHub issueI have not labeled this as a “bug report” as I am not sure whether this is a new feature or regression.
I am developing a package for the processing of NMR spectra that makes extensive use of the ipympl backend: https://github.com/NMRPy/nmrpy
As part of this there are a number of widgets (interactive matplotlib graphs) for phasing and peak picking of the NMR spectra. Some of these widgets print output to the cell output area (below the ipympl widget) after user interaction, using simple print()
function calls in the code. In some cases further user input is required for which I have made use of an ipywidgets.FloatText()
which is then also displayed in the output area.
As of version 0.5.0 this cell output area is no longer displayed. The widget interaction with the ipympl graphs still works but the text output from print()
calls and the ipywidgets output are not there.
- Is this intentional or a regression?
- If intentional, is there a way to get the output area back, or an alternative where to direct text output after interaction with a graph (or instantiate an
ipywidgets
widget) so that it is displayed to the user?
This functionality is crucial to my application and currently I am thus stuck with using ipympl<0.5.0. BTW this is using notebook, not jupyterlab.
Issue Analytics
- State:
- Created 3 years ago
- Comments:9 (6 by maintainers)
Can confirm. In the old ipympl (0.4.x) version the text appears, in the new version it does not. ipywidgets version is the same (7.5.1) in both cases.
I think ipympl is mature enough to justify spending some time on proper documentation (I’ve said I’d do that before, let’s see what I can manage this weekend). But I guess the current issue is about release notes, which is particularly justified since the API (or equivalent to that) is changing with new releases.
I’m not 100% sure if I’ve understood this correct, but I believe what you’re experiencing is how unless you create a
widgets.Output
, then use your print functionwith
that Output, and make sure todisplay()
that Output widget, the output won’t be created.I’ve quickly made an example below, and you can read more in the docs here. It is definitely confusing at first, but quite flexible!