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

Как добавить функцию сброса (reset) в программу, чтобы при нажатии кнопки btn2 программа останавливалась и сбрасывалась таймер на ноль?
  • 29 сентября 2023 г. 12:37
Ответы на вопрос 3
Для перезапуска программы в Tkinter при нажатии на кнопку можно использовать метод `destroy()` для закрытия текущего окна и создание нового экземпляра нашего приложения.

Вот пример кода, который позволяет перезапустить программу при нажатии на кнопку "Restart" (btn2):

```python
import tkinter as tk

def restart_program():
    root.destroy()
    # Здесь вы можете добавить любой код для сброса значений или состояния программы
    # Например, обнуление таймера или других переменных
    
    # Создаем новый экземпляр приложения
    root = tk.Tk()
    # Добавляем элементы, устанавливаем обработчик событий, и т.д.
    # ...
    root.mainloop()

# Создаем экземпляр класса Tk
root = tk.Tk()

# Создаем кнопку "Restart"
btn2 = tk.Button(root, text="Restart", command=restart_program)
btn2.pack()

# Запускаем главный цикл обработки событий
root.mainloop()
```

Если вы хотите сбросить таймер на ноль при нажатии кнопки, вы можете добавить соответствующий код в функцию `restart_program()`. Например:

```python
def restart_program():
    root.destroy()
    # Сброс значения таймера на ноль
    timer_value.set(0)
    # Создаем новый экземпляр приложения и т.д.
    # ...
```

Здесь `timer_value` - это переменная, которая хранит текущее значение таймера, например, связанную с ней переменную `StringVar()`.
import time
from tkinter import *

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

    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() 
 Здесь есть функция main_window(), которая создает главное окно программы с кнопками и текстом. Функции clicked1() и clicked2() отвечают за действия при нажатии на кнопки. Если нажата кнопка "НАЖМИ", то окно будет уничтожено через 10 секунд и затем снова создано. Если нажата кнопка "НАЖМИ2", то программа завершит свою работу.
Похожие вопросы