Tk Inter свиток не катится - PullRequest
       6

Tk Inter свиток не катится

0 голосов
/ 21 сентября 2018

Я написал следующий код для построения в окне 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 )
...