我有多个绘图内滚动窗口QT5小部件如下。
class ScrollableWindow(QtWidgets.QMainWindow):
def __init__(self, fig):
self.qapp = QtWidgets.QApplication([])
QtWidgets.QMainWindow.__init__(self)
self.widget = QtWidgets.QWidget()
self.setCentralWidget(self.widget)
self.widget.setLayout(QtWidgets.QVBoxLayout())
self.widget.layout().setContentsMargins(0,0,0,0)
self.widget.layout().setSpacing(0)
self.fig = fig
self.canvas = FigureCanvas(self.fig)
self.canvas.draw()
self.scroll = QtWidgets.QScrollArea(self.widget)
self.scroll.setWidget(self.canvas)
self.nav = NavigationToolbar(self.canvas, self.widget)
self.widget.layout().addWidget(self.nav)
self.widget.layout().addWidget(self.scroll)
self.show()
exit(self.qapp.exec_())
我尝试使用mpl_connect捕获按键事件。
def key_selector(event):
print('Key pressed.')
fig, axes = plt.subplots(ncols=4, nrows=5, figsize=(16,16))
for ax in axes.flatten():
ax.plot([2,3,5,1])
fig.canvas.mpl_connect('key_press_event', key_selector)
a = ScrollableWindow(fig)
但是mpl_connect 'key_press_event'没有触发。我尝试了另一个例子'button_press_event',并照常工作。如果对此有任何建议或指导,我们将不胜感激,谢谢。
1条答案
按热度按时间a0zr77ik1#
看一下matplotlib的这个问题。基本上,你需要激活Qt的焦点到你的matplotlib画布上。