小编use*_*667的帖子

matplotlib和Qt:mouse press event.key始终为None

我在Qt(PySide)应用程序中嵌入了matplotlib图,我想结合修改键(例如移位和控制)来响应鼠标点击事件.在下面的代码中,我使用canvas mpl_connect方法将'button_press_event'连接到打印event.key值的虚拟处理程序.即使我在鼠标单击期间按下修改键,该值也始终为"无".在Qt应用程序中嵌入matplotlib图时,如何在matplotlib鼠标事件处理程序中获取修饰键的状态?

谢谢.

import sys

from PySide import QtGui, QtCore

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

class MplCanvas(FigureCanvas):
    """Class to represent the FigureCanvas widget"""
    def __init__(self):
        self.fig = Figure()        
        self.ax = self.fig.add_subplot(111)

        FigureCanvas.__init__(self, self.fig)
        FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

        self.fig.canvas.mpl_connect('button_press_event',self._on_press)

    def _on_press(self,event):
        print( event.key )


class MplWidget(QtGui.QWidget):
    """Widget defined in Qt Designer"""
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)

        self.canvas = MplCanvas()

        self.vbl = QtGui.QVBoxLayout()
        self.vbl.addWidget(self.canvas)

        self.setLayout(self.vbl)


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = …
Run Code Online (Sandbox Code Playgroud)

python qt matplotlib pyside

5
推荐指数
2
解决办法
2280
查看次数

标签 统计

matplotlib ×1

pyside ×1

python ×1

qt ×1