Python 由于以下错误而未显示绘图:AttributeError:';非类型';对象没有属性';设置画布';

Python 由于以下错误而未显示绘图:AttributeError:';非类型';对象没有属性';设置画布';,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我试图在弹出窗口中显示绘图 这是用来绘制图表的 class Sheet: def plot_sheet(self): fig,ax = plt.subplots(1) ax.set_xlim([0, self.W]) ax.set_ylim([0, self.L]) recs = [] for i in range(len(self.rect_list)): if self.re

我试图在弹出窗口中显示绘图

这是用来绘制图表的

class Sheet:

    def plot_sheet(self):
        fig,ax = plt.subplots(1)
        ax.set_xlim([0, self.W]) 
        ax.set_ylim([0, self.L]) 
        recs = []
        for i in range(len(self.rect_list)):
            if self.rect_rotate[i]:
                ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].l, self.rect_list[i].w,linewidth=3,edgecolor='r'))
            else:
                ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].w, self.rect_list[i].l,linewidth=3,edgecolor='r'))
        #plt.show()
        return fig
使用此绘图页是因为要显示的图形数量取决于输入

class Indiv:

    def plot_sheets(self):
        for i in range(len(self.sheets)):
            self.sheets[i].plot_sheet()
这就是我用来展示图表的方法

fig = best.plot_sheets()

dataPlot = FigureCanvasTkAgg(fig, master = window)
dataPlot.show()
dataPlot.get_tk_widget().pack(side='top', fill='both', expand=1)
运行代码,我得到了这个错误

Tkinter回调中的异常

回溯(最近一次呼叫最后一次):

文件“C:\Users\sel\Anaconda3\lib\tkinter\uuuuu init\uuuuuu.py”,第1705行,在调用中

返回self.func(*args)

文件“”,第112行,在 继续按钮1=tk.按钮(画布,文本=”최적 组件嵌套计划(제조사용)",font=“calibri 11”,command=lambda:cal_culate1())

文件“”,第232行,校准1 dataPlot=FigureCanvasTkAgg(图,主窗口)

文件“C:\Users\sel\Anaconda3\lib\site packages\matplotlib\backends\u backend\u tk.py”,第204行,位于init 超级(FigureCanvasTk,self)。init(图)

文件“C:\Users\sel\Anaconda3\lib\site packages\matplotlib\backend_base.py”,第1618行,位于init 图.设置画布(自身)

AttributeError:“非类型”对象没有属性“set\u canvas”


如何恢复此错误?

您的代码中存在一些无法解决的问题,因为您没有解释所需的输出应该是什么,并且没有提供完整的代码

  • plot\u sheet()
    返回地物实例
  • plot_sheets()
    创建了许多地物实例,但没有返回任何实例(因此返回
    none
  • FigureCanvasTkAgg()
    需要一个figure实例,但您似乎试图提供几个,因为您希望传递
    best.plot\u sheets()的结果。

  • 这和你的问题不一样吗?是的,我创建这个问题是因为我觉得上一个问题没有得到很好的解释。你为什么再次问同样的问题?你在我上一个问题的评论中得到了同样的建议-你必须使用
    plot\u sheet()
    (不带
    s
    )而不是
    plot\u sheet()
    (带
    s
    ).你也得到了很好的答案(在上一个问题中),这将有助于你解决问题。