Задать btn_1 выполнять команду многократно на python

Рейтинг: 0Ответов: 1Опубликовано: 21.06.2023

При нажатии кнопки btn_1 выводится график. Но только один раз, далее нужен перезапуск. Что зациклить чтобы команда при нажатии выполнялась многократно?

import matplotlib.pyplot as plt
import tkinter as tk


# окно
win = tk.Tk()
win.geometry(f"400x500+100+200")
win.title("ОТЧЕТ ПО РАБОЧЕМУ ГРАФИКУ")
win.config(bg='#9AFFFF')
win.bind('<Escape>', lambda e: win.quit())
lmain = tk.Label(win)
lmain.pack()

# сложение чисел в одно
result = 0
for s in open('C:\\Users\\sbs3\\PycharmProjects\\Kokorevka_3\\stock.txt'): result += float(s.strip())
print(result)

# создание и вывод круглого графика
reswert = [result, 100]
labels = ['РАБОЧЕЕ ВРЕМЯ', 'СМЕНА']
cols = ['r', 'b']
explode = (0.1, 0)
plt.pie(reswert, labels=labels, explode=explode, colors=cols, shadow=True, wedgeprops=dict(width=0.5))
# plt.legend(labels, bbox_to_anchor=(0.1, 1.1))#легенда за пределами графика
plt.legend(loc='upper left')

btn_1 = tk.Button(win, text='ГРАФИК кам-1', command=plt.show)
btn_1.pack()

tk.mainloop()

Ответы

▲ 0
    import matplotlib.pyplot as plt
    def show():
        result = 0
    for s in open('C:\\Users\\sbs3\\PycharmProjects\\Kokorevka_3\\stock.txt'): 
    result += float(s.strip())
print(result)
reswert = [result, 100]
labels = ['РАБОЧЕЕ ВРЕМЯ', 'СМЕНА']
cols = ['r', 'b']
explode = (0.1, 0)
plt.pie(reswert, labels=labels, explode=explode, colors=cols, shadow=True, wedgeprops=dict(width=0.5))
# plt.legend(labels, bbox_to_anchor=(0.1, 1.1))#легенда за пределами графика
plt.legend(loc='upper left')
plt.show()
tk.mainloop()


    import tkinter as tk

    win = tk.Tk()
    win.geometry(f"200x300+100+200")
    win.title("График")

    btn = tk.Button(win, text="круг", command=show)
    btn.pack()

    win.mainloop()