我在PyQt4 UI中嵌入了一个matplotlib图 . 就像是
Building a matplotlib GUI with Qt Designer.
在QVBoxlayout中添加了FigureCanvasQTAgg和NavigationToolbar2QT,UI的右侧是图名的QListWidget .
没有工具栏快捷方式正常工作 . 我尝试更改QVBoxlayout和QListWidget Widget的焦点 .
图生成为
from matplotlib.figure import Figure
fig=figure()
ax=fig.add_subplot(111)
ax.plot.plot(np.random.rand(5))
此图传递给addmpl方法,其中生成画布和工具栏并将其添加到主窗口小部件 .
def addmpl(self,fig):
self.canvas = FigureCanvas(fig)
self.mplvl.addWidget(self.canvas)
self.canvas.draw()
self.toolbar = NavigationToolbar(self.canvas,self.mplwindow)
self.mplvl.addWidget(self.toolbar)
解决办法...
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()
但是像Constrain平移/缩放到x轴这样的快捷方式 - 使用鼠标进行平移/缩放时保持x看起来既困难又繁琐 .
解决这个Question有同样的问题 . (用NavigationToolbar2QT替换NavigationToolbar2QTAgg)
1 回答
如果没有看到你的代码部分初始化图形,并且在查看PyQt example之后,我会配置键盘快捷键:
确保你有
from matplotlib.backend_bases import key_press_handler
将matplotlib图形画布的按键绑定到处理程序:
这些步骤也适用于PyQt5,BTW .