Jupyter QtConsole 4.4
We’re pleased to announce the release of QtConsole 4.4, along with a follow-on bugfix update, 4.4.1. QtConsole, which melds the feel of a lightweight terminal and the functionality of an advanced GUI editor, is a rich interface to Jupyter kernels that can be used standalone or built in to an IDE like Spyder (with which QtConsole is a joint collaboration). From user-selectable syntax highlighting themes and expanded integration with external clients like your favorite editors and IDEs, to productivity boosts like block (un)indent, cell-specific Select-All, intelligent Ctrl-Backspace and Ctrl-Delete, and Ctrl-D to send an EOT
byte, there’s plenty new for everyone to like.
Read on for a visual summary of the key changes, and check out the Changelog and GitHub Milestone for more details. The new version is available on PyPI and Conda, if you want to get right to trying it out for yourself. If running under conda
, you can use Anaconda Navigator, or execute the following (from the Anaconda Prompt on Windows, or your terminal/command line otherwise, after first activate
-ing the environment with the QtConsole package you want to update):
conda update qtconsole
Or, if on a pip
-only install, after activate
-ing the appropriate virtualenv
/venv
, run:
pip install --upgrade qtconsole
Perhaps the most exciting improvements are the enhancements to QtConsole’s ability to integrate with external editors and IDEs. Thanks to the Jupyter client-server architecture, you can integrate QtConsole with any editor you want, allowing you to assemble your very own Spyder/MATLAB-like IDE out of the components of your choosing. Marijn van Vliet, the author of the changes, demonstrates a few of the possibilities in a short video:
Thanks to the new changes, you can now print beautifully-formatted input and output from other clients, like your editor, with proper indentation, customizable syntax highlighting, configurable prompts with an incrementing prompt number, and more. If you’re interested in setting up your own custom environment, check out Marijn’s blog post on the subject for more details.

Complementary to the previous enhancements, QtConsole now allows you to change the syntax highlighting theme and its overall color scheme (light/dark), and includes a wide variety of options to choose from. From popular styles like Monokai, emacs, vim and VS to more esoteric choices, the list should cover a wide variety of tastes. You can easily switch between them under View→Syntax Style.

When working with multi-line input, QtConsole now offers a block indent/unindent feature, allowing an entire selection to be indented or unindented at once — even across multiple levels of indents. Just highlight the lines you’d like to change, and press TAB to indent or Shift-TAB to unindent.
The Select-All feature is now cell-aware; pressing Ctrl-Shift-A once now only selects the text in the current In [ ]:
block (without the prompt), making it easy to just grab the current commands or code you’ve already typed. Pressing it again will trigger the old behavior, selecting all the input and output text since the start of the session, and tapping it a third time will cycle back to just selecting the current text.


Ctrl-Backspace and Ctrl-Delete are also more intelligent, no longer behaving too greedily across line boundaries and first consuming all the whitespace up to the next non-whitespace character before removing the characters themselves. This lets you easily fix indents, trim leading or trailing whitespace, remove uneeded line breaks and more in one or a few taps, without unintentionally deleting anything important. Similarly, tapping the right arrow at the end of the line now goes to the beginning of the next line’s text, rather than jumping all the way to the end of the cell.
You can now send an EOT
(“End of transmission”) character to a console awaiting input by pressing Ctrl-D when the current input is empty; Ctrl-D otherwise works as an alternate shortcut for Delete and Close Tab as before. This allows you to signal programs running in the console to terminate, like ipdb
and its interactive mode, that would otherwise require a restart to accomplish.

Finally, there are a number of smaller changes and bugfixes included, like allowing for copying input/output when the prompt is included, making completion not block the console, clarifying the documentation, and more. QtConsole 4.4.1 officially drops support for the ancient Python 3.3 and expands test coverage to Python 3.6, as well as fixing a couple more minor bugs.
We hope everyone loves what the new release of QtConsole has to offer! Thanks to all the contributors to this release and to the Spyder team, who help maintain the project. If you want to know more about using QtConsole, check out our documentation, and if you find any bugs or have specific feature requests, let us know on our GitHub site. Enjoy!