Python 如何调用NavigationToolbar2QT';控制台中的紧凑布局命令?

Python 如何调用NavigationToolbar2QT';控制台中的紧凑布局命令?,python,matplotlib,pyqt5,toolbar,Python,Matplotlib,Pyqt5,Toolbar,我在滚动区域中弹出的一组图形上使用Matplotlibs NavigationToolbar,但轴标签在小部件区域中显示不紧密。我使用plt.tight_layout()来清理轴,但y标签仍然没有拉紧,我必须将滚动区域小部件扩展到很宽的范围才能在GUI中看到它们,或者使用NavigationToolbar的configure_子窗口(3行带正方形)按钮并按下“tight layout”按钮,使y标签移动到清晰视图中,并随着小部件更自然地调整大小而移动。当我有很多图形同时加载到滚动区域时,问题就来

我在滚动区域中弹出的一组图形上使用Matplotlibs NavigationToolbar,但轴标签在小部件区域中显示不紧密。我使用plt.tight_layout()来清理轴,但y标签仍然没有拉紧,我必须将滚动区域小部件扩展到很宽的范围才能在GUI中看到它们,或者使用NavigationToolbar的configure_子窗口(3行带正方形)按钮并按下“tight layout”按钮,使y标签移动到清晰视图中,并随着小部件更自然地调整大小而移动。当我有很多图形同时加载到滚动区域时,问题就来了,我必须为每个单独的图形浏览菜单,这可能会很麻烦

我的问题是:如何在创建图形时从导航工具栏中自动激活紧密布局?我不知道怎么直接打电话给它。我查看了NavigationToolbar上另一个问题中的“我找到了”链接,看到“配置子图”菜单按钮调用了另一个类子图ToolQt,但我无法像导入此包中的NavigationToolbar2QT和FigureCanvasQTAgg类那样直接导入它,因此我无法像那样直接调用它。我试着打电话

   toolbar.configure_subplots._tight_layout
但工具栏无法识别configure_子窗口。 这是我的相关代码:

import pandas as pd
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
#from matplotlib.backends.backend_qt5agg import SubplotToolQt
import matplotlib.pyplot as plt

Class MainWindow(object):
   defsetupUI(self,blahblah):
      blah blah

   def populate_graphs(self):
     self.widgets = []
     self.graph_widget = QtWidgets.QWidget()
     self.scroll_layout = QtWidgets.QVBoxLayout()
     self.graph_widget.setLayout(self.scroll_layout)
     lay = QtWidgets.QVBoxLayout()
     self.scroll_layout.addLayout(lay)
     self.scroll_layout.addStretch()
    
     df = self.readDataTable(self.datatable)
    
     if not df.empty:
        plt.close('all')
        sample_name = df.columns
        sd_df = self.smooth(self.smooth(self.smooth(self.deriv(df))))
        for i in range(len(df.columns)):
            if i > 0:
                self.canvaswidget = GraphWidget(sample_name[i])
                self.canvaswidget.setMinimumSize(250, 400)
                self.widgets.append(self.canvaswidget)
                lay.addWidget(self.canvaswidget)
                plt.subplot(2,1,1)
                plt.plot(df.iloc[:,0],df.iloc[:,i])
                plt.title(sample_name[i])
                plt.xlabel(sample_name[0])
                plt.ylabel("OD")
                plt.subplot(2,1,2)
                plt.plot(sd_df.iloc[:,0],sd_df.iloc[:,i])
                plt.title("{0} Rate".format(sample_name[i]))
                plt.xlabel(sample_name[0])
                plt.ylabel("OD/min")
                plt.tight_layout()
            
     self.graphdisplay.setWidget(self.graph_widget)
     self.graphdisplay.setContextMenuPolicy(Qt.CustomContextMenu)
     self.graphdisplay.customContextMenuRequested.connect(self.graphMenuEvent)
    
     #Tell it to ignore the max figure open message
     plt.rcParams.update({'figure.max_open_warning': 0})

class GraphWidget(QtWidgets.QWidget):
   def __init__(self, name, *args, **kwargs):
     super(GraphWidget, self).__init__(*args, **kwargs)
     self.name = name        
     self.figure = plt.figure()
     self.axes = self.figure.add_subplot(111)
     self.canvas = FigureCanvas(self.figure)
     self.toolbar = NavigationToolbar(self.canvas, self)
     self.graph_layout = QtWidgets.QVBoxLayout()
     self.name_label = QtWidgets.QLabel(self.name)
     self.graph_layout.addWidget(self.name_label)
     self.graph_layout.addWidget(self.toolbar)
     self.graph_layout.addWidget(self.canvas)
     self.setLayout(self.graph_layout)