Я написал следующий код для построения в окне tk.upperlevel некоторых выбранных диаграмм. Однако все эти диаграммы вместе создают слишком большое окно, и я не могу видеть все без добавления полосы прокрутки.Проблема в том, что полоса прокрутки не катится, и я не могу понять, почему.
Вот код:
class Plot(tk.Frame):
def __init__(self,parent, width=16):
tk.Frame.__init__(self, parent)
self.plot_analysis()
def plot_analysis(self):
lista_metricas_select=[]
for k in range(len(metricas)):
if ((globals()['var_met'+(str(metricas[0][k])).replace(" ","")]).get()!=0):
lista_metricas_select.append(metricas[0][k])
indicador=0
for u in range(len(lista_metricas_select)):
f = figure.Figure(figsize=(13,8), dpi=100)
a = f.add_subplot(111)
a.autoscale()
a.grid()
a.set_title((lista_metricas_select)[u])
for i in range(n_setores):
folder_aqui=listdir(DIRECTORY+'\\'+setores[i])
for j in range(len(folder_aqui)):
ticker=folder_aqui[j][-9:-5]
if((globals()['var'+setores[i]+ticker]).get()!=0):
indicador+=1
modelo=globals()['modelo'+ticker]
modelo=populate(insert_quarter_header(modelo),create_frame(insert_quarter_header(modelo),lista_metricas_select))
modelo_m=modelo.iloc[np.where(modelo.index==lista_metricas_select[u])[0][0],:]
trim=[x for x in modelo.columns if isinstance(x,str)]
anual=[int(x) for x in modelo.columns if (isinstance(x,float) or isinstance(x,int))]
print(set(anual))
#print(np.where(modelo.columns==anual[0]))
aplotar_trim = modelo_me.iloc[0:np.where(modelo.columns==anual[0])[0][0]]
aplotar_anual = modelo_m.iloc[np.where(modelo.columns==anual[0])[0][0]:]
plotar=aplotar_trim
stringui='trim'
lab=trim
globals()['a'+str(indicador)+str(stringui)]=plotar
a.plot(globals()['a'+str(indicador)+str(stringui)],label=lista_metricas_select[u]+' '+str(ticker),marker='o')
xlabels =lab
# print(xlabels)
a.set_xticklabels(xlabels,rotation=80)
a.legend()
canvas = FigureCanvasTkAgg(f, master=self)
canvas.get_tk_widget().grid(row=u, column=0)#(row=0, column=0, sticky=NSEW)#(side=TOP, fill=BOTH, expand=1)
canvas.draw()
############### TOOLBAR ###############
toolbarFrame = Frame(self)
toolbar = NavigationToolbar2TkAgg(canvas, toolbarFrame)
toolbar.update()
toolbarFrame.grid(row=22,column=4)
## add scrollbar
# canvas.configure(scrollregion=canvas.bbox('all'))
frame=Frame(self)
#self.resizable(0,0)
vbar=Scrollbar(self, orient = VERTICAL)
vbar.grid(row=0, column=1)
hbar=Scrollbar(self, orient=HORIZONTAL)
hbar.grid(row=1, column=0)
canvas.get_tk_widget().config(xscrollcommand=hbar.set, yscrollcommand = vbar.set)
hbar.config(command=canvas.get_tk_widget().xview)
vbar.config(command=canvas.get_tk_widget().yview)
#frame.configure(scrollregion=frame.bbox("all"))
#vbar.config( command = mytxt.yview )