通过单击图上的鼠标按钮:
self.canvas.Fig.canvas.mpl_connect('button_press_event', self.button_press)
我可以通过在状态栏中打印"按下按钮"来接收信号并生成答案 self.statusBar().showMessage("Key pressed", 400)
但由于某些原因,同一段代码不能用于按键(键盘):
self.canvas.Fig.canvas.mpl_connect('key_press_event', self.key_press)
未显示"按下按键"消息,表示未发生任何事件或未收到任何信号.
这是我所有必备课程的MWE:
import sys
import matplotlib
matplotlib.use("Qt5Agg")
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MyMplCanvas(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100,data=[[]],timedelay=[],wavelength=[]):
self.Fig = Figure(figsize=(width, height), dpi=dpi)
self.Dataplot = self.Fig.add_subplot(111)
self.compute_initial_figure(data,timedelay, wavelength)
FigureCanvas.__init__(self, self.Fig)
self.setParent(parent)
FigureCanvas.setSizePolicy(self,QSizePolicy.Expanding,QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
def compute_initial_figure(self,data,timedelay,wavelength):
pass
class MyStaticMplCanvas(MyMplCanvas):
def __init__(self, *args, **kwargs):
MyMplCanvas.__init__(self, *args, **kwargs)
def compute_initial_figure(self,data,timedelay,wavelength):
self.Dataplot.set_xlabel('Wavelength, nm')
self.Dataplot.set_ylabel('Time delay, …Run Code Online (Sandbox Code Playgroud)