Попытка сделать несколько круговых диаграмм с итеративным циклом, получая только один - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь сделать несколько круговых диаграмм, используя этот код:

n = 0
perc = list()
while n < len(piedata):
    perc.append(piedata[n+2])
    n += 3
print (perc)
n = 0
fails = list()
while n < len(piedata):
    fails.append(piedata[n+1])
    n += 3
print(fails)

n = 0
titles = list()
while n < len(piedata):
    titles.append(piedata[n])
    n += 3
print(titles)
for percent, fail, title in zip(perc, fails, titles):
    piedata = [percent, (100-int(percent))]

    fig = matplotlib.figure.Figure(figsize=(5, 5))
    ax = fig.add_subplot(111)
    ax.pie(piedata)  # this is the information that the circle diagram will be made out of
    ax.legend([('amount of attempts:', NOTT), ('amount of fails', fail)])

    circle = matplotlib.patches.Circle((0, 0), 0.7, color='white')
    ax.add_artist(circle)


    # this is the code for actually putting the circle diagram/pie chart on the screen
    canvas = FigureCanvasTkAgg(fig, master=window)
    canvas.get_tk_widget().pack()
    canvas.draw()

    Label(window, text=(title, title), bg='light blue').pack()

    window.mainloop()
    print(percent)
    print(fail)

Из того, что я могу сказать, моя проблема в конце, когда window.mainloop() можно использовать только один раз, а затемне может быть использован снова.

Я сейчас пытаюсь вытащить из него 2 цикла.

1 Ответ

0 голосов
/ 14 апреля 2019

Любой, кто найдет это: tk.mainloop () (в моем случае window.mainloop ()) останавливает выполнение программы во многих случаях.Это очень упрощенная версия, но, вероятно, если вы столкнулись с этим, ответ будет заменить его на:

  window.update_idletasks()
            window.update()

Однако, если вы используете его в цикле,как и раньше, вам нужно будет добавить предложение break или использовать цикл for, иначе он будет повторяться.

...