Closed
Description
Bug summary
https://doc.qt.io/qtforpython-6/tutorials/basictutorial/signals_and_slots.html#the-slot-class says
We recommend marking all methods used by signal connections with a
@QtCore.Slot()
decorator. Not doing causes run-time overhead due to the method being added to theQMetaObject
when creating the connection. This is particularly important forQObject
classes registered with QML, where missing decorators can introduce bugs.
NavigationToolbar2QT
does not do that.
Code for reproduction
import os
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
from PySide6.QtWidgets import QApplication
os.environ["QT_LOGGING_RULES"] = "qt.pyside.libpyside.warning=true"
app = QApplication()
canvas = FigureCanvasQTAgg()
NavigationToolbar2QT(canvas)
Actual outcome
qt.pyside.libpyside: Warning: Registering dynamic slot "home()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "back()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "forward()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "pan()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "zoom()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "configure_subplots()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "edit_parameters()" on NavigationToolbar2QT. Consider annotating with @Slot()
qt.pyside.libpyside: Warning: Registering dynamic slot "save_figure()" on NavigationToolbar2QT. Consider annotating with @Slot()
Expected outcome
Silence
Operating system
Windows 10 (also Ubuntu 23.10)
Matplotlib Version
3.8.0
Matplotlib Backend
QtAgg
Python version
Python 3.12.0
Jupyter version
irrelevant
Installation
pip