Matplotlib Widgets
Matplotlib isn't only for static plots. While GUIs are typically created with GUI libraries and frameworks such as PyQt, Tkinter, Kivy and wxPython, and while Python does have excellent integration with PyQt, Tkinter and wxPython - there's no need to use any of these for some basic GUI functionality, through Matplotlib Widgets.
The matplotlib.widgets
module has several classes, including the AxesWidget
, out of which Button
s, CheckButton
s, Slider
s, TextBox
es, etc are derived. These all accept the Axes
they're being added to as the one and only mandatory constructor argument, and their positioning has to be manually set. A thing to note is that the widget is the axes, so you'll create an Axes
instance for each widget.
Another thing to note is that you have to keep references to the widgets otherwise, they might get garbage collected.
Each of them can also be disabled by setting active
to False
, in which case, they won't respond to any events, such as being clicked on. That being said, we can introduce a new type of interactivity to our plots, through various GUI elements and components.
Note: Matplotlib isn't meant to be used for high-quality GUI creation, nor user-friendly systems. These widgets are rudimentary, don't really look great and have limited functionality. They're meant as a way to prototype and test things out, rather than actually ship them.