我在pyqt4ui中嵌入了一个matplotlib图形。有点像
Building a matplotlib GUI with Qt Designer.
FigureCanvasQTAgg和NavigationToolbar2QT被添加到QVBoxlayout中,UI右侧是一个图形名称的QListWidget。在
工具栏快捷方式都不起作用。我尝试改变QVBoxlayout和QListWidget小部件的焦点。在
图形生成为
from matplotlib.figure import Figure
fig=figure()
ax=fig.add_subplot(111)
ax.plot.plot(np.random.rand(5))
这个图被传递到addmpl方法,在这里生成画布和工具栏并添加到主窗口小部件中。在
^{pr2}$解决方法。。。在
def menu(self):
self.savefig=QtGui.QAction('&Save', self)
self.savefig.setShortcut('Ctrl+S')
self.savefig.triggered.connect(self.save_figure)
undo=QtGui.QAction('&Undo', self)
undo.setShortcut('Ctrl+Z')
undo.triggered.connect(self.back)
redo=QtGui.QAction('&Redo', self)
redo.setShortcut('Ctrl+Y')
redo.triggered.connect(self.forward)
figoptions=QtGui.QAction('&Figure Options', self)
figoptions.setShortcut('Ctrl+F')
figoptions.setStatusTip('Edit curves lines and axes parameters')
figoptions.triggered.connect(self.edit_parameters)
def back(self):
self.toolbar.back()
def forward(self):
self.toolbar.forward()
def save_figure(self):
self.toolbar.save_figure()
def edit_parameters(self):
self.toolbar.edit_parameters()
但是像“约束平移/缩放到x轴-用鼠标平移/缩放时按住x轴”这样的快捷方式看起来既困难又乏味。在
此Question的解决方案也有相同的问题。(将NavigationToolbar2QTAgg替换为NavigationToolbar2QT)
在没有看到初始化图形的代码部分,并且查看了PyQt example之后,我猜测您没有配置键盘快捷键:
from matplotlib.backend_bases import key_press_handler
将matplotlib图形画布的按键绑定到处理程序:
配置画布小部件以处理键盘事件:
定义处理程序以调用按键处理程序:
顺便说一句,这些步骤也适用于PyQt5
这是一种PyQt专用的替代解决方案(用PyQt5测试)。它不像mpl_connect('key_press_event'…)那样简洁,但允许更大的灵活性,例如重新定义快捷键。在
NavigationToolbar2QT从QToolBar继承,QToolBar又从QWidget继承。因此,工具栏上的所有操作都可以通过QWidget.actions(). 在
例如,可以定义全局快捷方式并将其连接到工具栏上的“缩放”:
相关问题 更多 >
编程相关推荐