python - 如何发出(发射)axes_leave_event

标签 python pyqt matplotlib

这是我stackoverflow的第一个问题!我有一个显示 mpl 图 Canvas 的 PyQT gui。我已将主轴周围的边距设置为 0,因此绘图将完全填满图形 Canvas 和包含它的小部件。问题是,当我这样做时,当我离开图形 Canvas 时,我不再得到 axes_leave_event。例如,当我点击 mpl_toolbar 中的平移按钮时,我的光标变为十字箭头,但当我离开小部件时,我希望它恢复正常并返回十字箭头当我重新进入小部件时出现箭头。如果我不最小化轴周围的边距,那么它会像我想要的那样工作。我也可以连接 axes_leave_event,但我不想连接它,我想发出它,但不知道该怎么做。

非常感谢大家。

我的应用程序相当大,所以我只展示我认为最相关的代码。

    def create_main_frame(self):
        self.dpi = 100
        self.fig = Figure((5.0, 4.0), dpi=self.dpi)
        self.fig.subplots_adjust(left = 0, right=1, top=1, bottom=0)
        self.map_canvas = MyDiagram(self.fig)
        
        self.add_axis()
           
        self.mpl_toolbar = NavigationToolbar(self.map_canvas, None)
        self.layout().addWidget(self.map_canvas)  


class MyDiagram(FigureCanvas):
    def __init__(self, fig):
        FigureCanvas.__init__(self, fig)
        self.mpl_connect('axes_leave_event', self.testing)
    def resizeEvent(self, event):
        if not event.size().height() == 0:
            FigureCanvas.resizeEvent(self, event)

    def testing(self, event):
        pass

    def leaveEvent(self, event):
        FigureCanvas.leaveEvent(self, event)
        #If I could somehow get the 'axes_leave_event' to fire right here I would be set.

最佳答案

这在某种程度上是基于猜测,因为我无法使用 matplotlib 对其进行测试,但按照以下思路可能会起作用:

class MyDiagram(FigureCanvas):
    def __init__(self, fig):
        FigureCanvas.__init__(self, fig)
        self._cursor = None

    def enterEvent(self, event):
        if (self._cursor is not None and
            QApplication.overrideCursor() is None):
            QApplication.setOverrideCursor(self._cursor)
        FigureCanvas.enterEvent(self, event)

    def leaveEvent(self, event):
        self._cursor = QCursor(QApplication.overrideCursor())
        QApplication.restoreOverrideCursor()
        FigureCanvas.leaveEvent(self, event)

关于python - 如何发出(发射)axes_leave_event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361848/

相关文章:

python - 如何在使用 PyQt5 打开新窗口时隐藏当前窗口

python - 如何删除Python输入中的空格

python - Unicode编码错误: 'ascii' codec can't encode character u'\u2029'

python - 对齐 QTableWidgetItem 会导致 item 为 None

python - PyQt5中QUdpSocket没有writeDatagram()函数?

python - 在 numpy 中索引 3d 网格数据的球形子集

python - 可选择在 Django 或 nginx 中限制上传和下载速度

python - 更改 plt.plot 的 for 循环中的标题并创建 6x16 子图

python pandas 按一天中的小时求和

python - 图例标记多次出现