Задать вопрос
@hydraden

Как при нажатии на button в Tkinter перезапустить программу?

стоит передо мной задание, сделайте так, чтобы при нажатии btn1 программа выключалась и включалась через 10 секунд и так до бесконечности, а при btn2. Так вот, у меня вопрос, почему есть quit, но нет reset?!

import time
from tkinter import *

def clicked1():
while True:
???
time.sleep(10)

def clicked2():
quit()

window = Tk() #создание окна
window.title('Будильник') #заголовок окна
window.geometry('400x400') #размеры окна
lbl = Label(window, text='Вы долго смотрели в монитор,\n теперь посмотрите в окно.', font=('Arial Bold', 14))
lbl.grid(column=0, row=0)

#вызов функции clicked() при нажатии кнопки
btn1 = Button(window, text='НАЖМИ', command=clicked1)
btn2 = Button(window, text='НАЖМИ2', command=clicked2)

btn1.grid(column=0, row=1)
btn2.grid(column=1, row=1)
window.mainloop() #бесконечный цикл окна, окно ждёт нажатий
  • Вопрос задан
  • 657 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@ssmolyakow
Для этого нужно поместить код главного окна в функцию, которую можно будет вызывать и дестроить:

import time
from tkinter import *


def main_window(): #функция созданий главного окна, здесь лежит весь код окна: кнопки, текст и т.д.
    global window
    window= Tk() #создание окна
    window.title('Будильник') #заголовок окна
    window.geometry('400x400') #размеры окна
    lbl = Label(window, text='Вы долго смотрели в монитор,\n теперь посмотрите в окно.', font=('Arial Bold', 14))
    lbl.grid(column=0, row=0)

    # вызов функции clicked() при нажатии кнопки
    btn1 = Button(window, text='НАЖМИ', command=clicked1)
    btn2 = Button(window, text='НАЖМИ2', command=clicked2)

    btn1.grid(column=0, row=1)
    btn2.grid(column=1, row=1)
    window.mainloop()  # бесконечный цикл окна, окно ждёт нажатий

def clicked1(): #функция убивает главное окно, затем снова вызывает его и оно вновь появляется
    time.sleep(10)
    window.destroy()
    main_window()

def clicked2():
    quit()

if __name__ == '__main__': #первично вызываем главное окно при включении программы
    main_window()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы