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
).你也得到了很好的答案(在上一个问题中),这将有助于你解决问题。