gpt4 book ai didi

python - matplotlib NavigationToolbar2QT 操作中没有图形选项

转载 作者:行者123 更新时间:2023-12-01 00:47:14 24 4
gpt4 key购买 nike

我正在使用 PyQt5 和 matplotlib 来制作用于绘图的 GUI。我想在按下工具栏按钮时添加更多功能。例如,当我想在单击主页按钮时执行某些操作时,我会执行以下操作:

self.toolbar._actions['home'].triggered.connect(self.do_something)

并且它有效。但是,我找不到下面以橙色显示的图形选项按钮的操作: matplotlib toolbar

当我这样做时:

self.toolbar._actions

返回

{'home': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE4C8>, 'back': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE558>, 'forward': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE5E8>, 'pan': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE708>, 'zoom': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE798>, 'configure_subplots': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE828>, 'save_figure': <PyQt5.QtWidgets.QAction object at 0x0000020D91ECE9D8>}

字典仅包含 7 个对象,没有“图形选项/编辑轴”按钮。

单击图形选项按钮后如何执行某些操作?

最佳答案

该 QAction 无法直接访问,但如果您分析 source code您会看到它有“自定义”文本,因此您可以使用 findChildren 来获取它:

for action in self.toolbar.findChildren(QtWidgets.QAction):
if action.text() == "Customize":
action.triggered.connect(self.do_something)
break

另一个选项是重写 edit_parameters() 方法,因为它是由 QAction 调用的:

import sys
import numpy as np

from PyQt5 import QtCore, QtWidgets

from matplotlib.backends.backend_qt5agg import (
FigureCanvas,
NavigationToolbar2QT,
)
from matplotlib.figure import Figure


class NavigationToolbar(NavigationToolbar2QT):
def edit_parameters(self):
print("before")
super(NavigationToolbar, self).edit_parameters()
print("after")


class ApplicationWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self._main = QtWidgets.QWidget()
self.setCentralWidget(self._main)
layout = QtWidgets.QVBoxLayout(self._main)

self.m_canvas = FigureCanvas(Figure(figsize=(5, 3)))
self.m_toolbar = NavigationToolbar(self.m_canvas, self)
layout.addWidget(self.m_canvas)
self.addToolBar(self.m_toolbar)

self._static_ax = self.m_canvas.figure.subplots()
t = np.linspace(0, 10, 501)
self._static_ax.plot(t, np.tan(t), ".")


if __name__ == "__main__":
qapp = QtWidgets.QApplication(sys.argv)
app = ApplicationWindow()
app.show()
qapp.exec_()

关于python - matplotlib NavigationToolbar2QT 操作中没有图形选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56868619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com