61
votes

In iPython Notebook, is it possible to disable the autoscrolling of long outputs? Or at least set a threshold for the output length before autoscrolling sets in?

Tried the following command

%%javascript
IPython.OutputArea.auto_scroll_threshold = 9999;

but it gives an error

Javascript error adding output!
SyntaxError: Unexpected identifier
See your browser Javascript console for more details.
6
You may be able to edit the config file... In the meantime, if you click on the side of the result bar, it will rotate from autoscroll to expanded to hidden. - Reblochon Masque

6 Answers

75
votes

Can also be done via user interface.

  • Individual cells: Cell->Current Outputs->Toggle Scrolling
  • All cells: Cell->All Outputs->Toggle Scrolling

enter image description here

74
votes

To disable auto-scrolling, execute this javascript in a notebook cell before other cells are executed:

%%javascript
IPython.OutputArea.prototype._should_scroll = function(lines) {
    return false;
}

There is also an ipython notebook extension, disable_autoscroll, you can use for a more permanent change. Follow ipython issue #2172 for the latest details.

3
votes

To disable scroll to bottom after run all command, execute this code:

%%javascript
require("notebook/js/notebook").Notebook.prototype.scroll_to_bottom = function () {}
2
votes

In the similar way that you can hack a cell to autorun, you can add the following cell:

%%javascript
require(
        ["notebook/js/outputarea"],
        function (oa) {
            oa.OutputArea.auto_scroll_threshold = -1;
            console.log("Setting auto_scroll_threshold to -1");
        });

which will set the auto_scroll_threshold to -1 which means never autoscroll.

This works on my notebooks that are trusted (e.g. jupyter trust notebook.ipynb), not sure if any cells are executed in untrusted notebooks.

2
votes

This works for me (with no semicolon)

    %%javascript
    IPython.OutputArea.auto_scroll_threshold = 9999
2
votes

To prevent scrolling within a single cell output, select the cell and press Shift+O while in command state. It will toggle output for that particular cell. If you want all the cells to display long outputs without scrolling, then go to the Cell tab -> All Outputs -> Toggle Scrolling. That's it !!!