Relating button made in Tkinter, with graph generated in matplotlib

0

Good evening!

I have the following code, which calls an excel table and converts it to a bar chart:

import openpyxl
import matplotlib.pyplot as plt

book = openpyxl.load_workbook('planilha.xlsx')
sheet = book.active
celulas = sheet['A2':'B8']# Informa em que células estão os dados

for c1, c2 in celulas:
        print("{0:8} {1:8}".format(c1.value, c2.value))# Percorre o arquivo .xlsx e printa na tela os dados

y_vals = []
x_names = []

for c1, c2 in celulas:# Popula as listas y_vals e x_names, com os valores encontrados na planilha
        x_names.append(c1.value)
        y_vals.append(c2.value)

x_pos = range(len(y_vals))

plt.subplots_adjust(bottom=0.15) # Margem em baixo para que os nomes apareçam bem
barlist = plt.bar(x_pos, y_vals, align='center')
barlist[-1].set_color('r') # Muda a cor da última barra
plt.xticks(x_pos, x_names , size='small', rotation=35, ha="right") # Definição e disposição das legendas em x
plt.ylabel('Reais - R$')
plt.title('Rendimento Mensal(R$) de pessoas com 10 anos ou mais p/ cidade - Fev/2016')
plt.show()

Now I need Tkinter to open this chart by selecting that graph in the ComboBox and clicking the Show button.

I tried to do the following:

from tkinter import *
from tkinter import ttk
import openpyxl
import matplotlib.pyplot as plt


tela = Tk()
texto = StringVar()
texto.set("Tabelas: ")

combo = ttk.Combobox(tela)
combo.place(x=280,y=200)
combo['values'] = ('RendimentoMensal')


def obter():
    plt.show()


botao = Button(tela,command=obter,text='Mostrar').place(x=80,y=150)

titulo = Label(tela,textvariable=texto)
combo.place(x=40,y=200)


tela.geometry("700x500")
tela.mainloop()


book = openpyxl.load_workbook('planilha.xlsx')
sheet = book.active
celulas = sheet['A2':'B8']# Informa em que células estão os dados

for c1, c2 in celulas:
        print("{0:8} {1:8}".format(c1.value, c2.value))# Percorre o arquivo .xlsx e printa na tela os dados

y_vals = []
x_names = []

for c1, c2 in celulas:# Popula as listas y_vals e x_names, com os valores encontrados na planilha
        x_names.append(c1.value)
        y_vals.append(c2.value)

x_pos = range(len(y_vals))

plt.subplots_adjust(bottom=0.15) # Margem em baixo para que os nomes apareçam bem
barlist = plt.bar(x_pos, y_vals, align='center')
barlist[-1].set_color('r') # Muda a cor da última barra
plt.xticks(x_pos, x_names , size='small', rotation=35, ha="right") # Definição e disposição das legendas em x
plt.ylabel('Reais - R$')
plt.title('Rendimento Mensal(R$) de pessoas com 10 anos ou mais p/ cidade - Fev/2016')
plt.show()

Could someone help me with this problem?

    
asked by anonymous 29.06.2018 / 01:14

0 answers