我正在尝试在弹出窗口中显示图。
这是用于绘制图形。
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
使用此plot_sheets是因为要显示的图形数取决于输入。
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__init __。py”,行1705返回self.func(* args)
文件“”,第112行,在 procedure_button1 = tk.Button(画布,文本=“组件嵌套计划(제조사용)”,字体=“ calibri 11”,command = lambda:cal_culate1())
文件“”,第232行,位于cal_culate1中 dataPlot = FigureCanvasTkAgg(fig,master = window)
文件“ C:\ Users \ sel \ Anaconda3 \ lib \ site-packages \ matplotlib \ backends_backend_tk.py”,第204行, init 超级(FigureCanvasTk,自身)。初始化(图)
文件“ C:\ Users \ sel \ Anaconda3 \ lib \ site-packages \ matplotlib \ backend_bases.py”,行1618, init Figure.set_canvas(self)
AttributeError:“ NoneType”对象没有属性“ set_canvas”
如何恢复此错误?
答案 0 :(得分:1)
您的代码存在一些无法解决的问题,因为您没有解释所需的输出,并且您没有提供完整的代码。
plot_sheet()
返回一个图形实例plot_sheets()
创建了许多图形实例,但均未返回(因此返回None
FigureCanvasTkAgg()
期望一个图形实例,但是您似乎试图提供多个图形实例,因为您想传递best.plot_sheets()