我正在尝试在PyQt GUI中的多列布局中嵌入多个matplotlib图。乍一看,我成功地设置了所需的布局,但当将鼠标移动到任何画布上时,它们会改变大小并“闪烁”。按下工具栏上的缩放按钮时,这会变得更加明显。
对于每个matplotlib画布,我连接了一个工具栏。如果我没有连接工具栏,则不会出现问题。我尝试过几种方式安排工具栏和画布 - 使用QGridLayout或嵌套的QVBoxLayouts和QHBoxLayouts。无论哪种方式,如果彼此相邻的地块出现问题。如果我将所有图表放在一个列中,它就不会。
我已经在Windows(Python Anaconda 5.0.1)中使用PyQt4和Linux 3.5中的Python 3.5.2(KDE Neon 64位)以及PyQt4和PyQt5(v.5.7.1),matplotlib 1.5进行了尝试。 1但结果相同。我也尝试使用add_axes而不是add_subplot。有人可以帮我理解导致这种情况的原因或找到某种解决方法吗?我不能使用matplotlib子图。
from PyQt5 import QtCore, QtGui, QtWidgets
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
figure1 = Figure()
figure2 = Figure()
figure3 = Figure()
figure4 = Figure()
canvas1 = FigureCanvas(figure1)
canvas2 = FigureCanvas(figure2)
canvas3 = FigureCanvas(figure3)
canvas4 = FigureCanvas(figure4)
ax1 = figure1.add_subplot(111)
ax2 = figure2.add_subplot(111)
ax3 = figure3.add_subplot(111)
ax4 = figure4.add_subplot(111)
toolbar1 = NavigationToolbar(canvas1, self)
toolbar2 = NavigationToolbar(canvas2, self)
toolbar3 = NavigationToolbar(canvas3, self)
toolbar4 = NavigationToolbar(canvas4, self)
mainLayout = QtWidgets.QGridLayout()
mainLayout.addWidget(toolbar1,0,0)
mainLayout.addWidget(toolbar2,0,1)
mainLayout.addWidget(toolbar3,2,0)
mainLayout.addWidget(toolbar4,2,1)
mainLayout.addWidget(canvas1,1,0)
mainLayout.addWidget(canvas2,1,1)
mainLayout.addWidget(canvas3,3,0)
mainLayout.addWidget(canvas4,3,1)
self.setLayout(mainLayout)
self.setWindowTitle("Flow Layout")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
mainWin = Window()
mainWin.show()
sys.exit(app.exec_())
答案 0 :(得分:0)
我遇到了类似的问题,并且通过以下方式解决了该问题:
System.ComponentModel.Annotations.4.6.0-preview.19073.11/lib/net461/System.ComponentModel.Annotations.dll
问题在于工具栏变得比画布宽。