Задать вопрос
Vitalianskiy
@Vitalianskiy
Student

Как очистить окно tkinter при нажатии на кнопку?

Доброго времени бытия!
Я реализовал код который выводит кардиоиду при нажатие кнопки Draw(пользователь может задавать свои значения радиуса и количества линий). И если несколько раз подряд нажать на неё с разными параметрами то кардиоиды будут накладываться друг на друга. Как реализовать так чтоб каждый раз была отрисовка новой кардиоиды или реализовать кнопку для очистки окна. Вот код:

from tkinter import *

import math


def cardioid(radius, num_lines):
    radius = int(radius)
    num_lines = int(num_lines)
    if num_lines == 1:
        num_lines = 2

    for i in range(num_lines):
        theta = (2 * math.pi / num_lines) * i
        x1 = int(radius * math.cos(theta)) + 320
        y1 = int(radius * math.sin(theta)) + 250

        x2 = int(radius * math.cos(2 * theta)) + 320
        y2 = int(radius * math.sin(2 * theta)) + 250
        canvas.create_line((x1, y1), (x2, y2))




root = Tk()
root.title("Cardioid")

canvas = Canvas(width=700, height=500, bg='green')

r = StringVar()
n = StringVar()


lbl = Label(text="Enter radius:")
lbl.grid(column=0, row=4)

lbl_1 = Label(text="Enter num lines:")
lbl_1.grid(column=0,row=6)


b_draw = Button(text="Draw", width=15, command=lambda: cardioid(r.get(),n.get()))
b_draw.grid(row=0, column=0)


b_clear = Button(text = "Clear", width=15)
b_clear.grid(row=1,column=0)


ent = Entry(root, width=20,textvariable=r)
ent.grid(row=5, column=0)


ent_1 = Entry(root, width=20, textvariable=n)
ent_1.grid(row=7, column=0)


Exit = Button(root, text ="Quit", width=15, command=root.quit)
Exit.grid(row=19, column=0)

canvas.grid(row=0, column=1, rowspan=20)
root.mainloop()
  • Вопрос задан
  • 962 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект