Анти-антистрессы = стрессы стрессы стрессы. (Короче у меня один раз удаляет все кнопки а потом вообще не удаляет кнопок.)

from tkinter import *
tk = Tk()

def a():
    print("Точнее, не антистресс.")
    print("")

def b():
    print("Ответ: нет.")
    print("")

def c():
    print("Зачем ты нажал сюда?")
    print("")

def Next():
    btn1.destroy()
    btn2.destroy()
    btn3.destroy()
    btnN.destroy()
    
    # Очень нужно
    btnB = Button(tk, text="Предыдущая страница.", command=Back)
    btn4 = Button(tk, text="Много НЕ антистрессов не бывает!", command=d)
    btn5 = Button(tk, text="Мятый антистресс.", command=e)
    btn6 = Button(tk, text="Последний не антистрес.", command=f)

    btnB.pack()
    btn4.pack()
    btn5.pack()
    btn6.pack()

def Back():
    btnB.destroy()
    btn4.destroy()
    btn5.destroy()
    btn6.destroy()

    # Очень нужно
    btn1 = Button(tk, text="Точно антистресс.", command=a)
    btn2 = Button(tk, text="Это антистресс?", command=b)
    btn3 = Button(tk, text="Точно не антистресс.", command=c)
    btnN = Button(tk, text="Следущая страница.", command=Next)
 
    btn1.pack()
    btn2.pack()
    btn3.pack()
    btnN.pack()

def d():
    print("Точнее, бывает.")
    print("")

def e():
    print("А вы поняли?")
    print("")

def f():
    print("А вот это антистрес!")
    print("")

btn1 = Button(tk, text="Точно антистресс.", command=a)
btn2 = Button(tk, text="Это антистресс?", command=b)
btn3 = Button(tk, text="Точно не антистресс.", command=c)
btnN = Button(tk, text="Следущая страница.", command=Next)
btnB = Button(tk, text="Предыдущая страница.", command=Back)
btn4 = Button(tk, text="Много НЕ антистрессов не бывает!", command=d)
btn5 = Button(tk, text="Мятый антистресс.", command=e)
btn6 = Button(tk, text="Последний не антистрес.", command=f)

btn1.pack()
btn2.pack()
btn3.pack()
btnN.pack()

Должно быть так когда ты переходишь на следующую страницу должны кнопки которые уже есть стереться и добавится другие (работает один раз), а когда обратно то тоже самое только добавляться кнопки которые были на первой странице (вообще не работает). (Нажимая на другие кнопки просто должен выводится текст.)


Ответы (1 шт):

Автор решения: Amgarak

Вам бы сперва учебник полистать, но постараюсь навести на некоторые мысли:

Вот вы сохраняете кнопку в переменную: btnB = Button(tk, text="Предыдущая страница.", command=Back) -> переменная имеет глобальную зону видимости.

Теперь мы скажем вызываем функцию def Next(): (по соглашению функции не должны именоваться с большой буквы) и получается интересный момент, вы вызываете метод btnB.destroy() для глобальной переменной, а следом объявляете локальную переменную:

def Next():
    btnN.destroy() # Вызов для глобальной переменной 
    btnB = Button(tk, text="Предыдущая страница.", command=Back) # Создание локальной переменной

Получается, что вы не обновляете свою изначальную переменную, а создаёте локальную которая удаляется после завершения функции (почитайте).

Так же у вас в коде много лишнего, дублирующего кода, от которого желательно избавится. И пересмотрите нейминг функций, вот что это за имя для функции def d(): - не ленитесь, давайте осознанные имена.

Ещё один момент, в своём коде вы забыли запустить главный цикл самого тинкера -> tk.mainloop() -> Для отображения окна и взаимодействия с пользователем у окна вызывается метод mainloop()

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

from tkinter import *
tk = Tk()

btn1 = None
btn2 = None
btn3 = None
btnN = None
btnB = None
btn4 = None
btn5 = None
btn6 = None

def a():
    print("Точнее, не антистресс.")
    print("")

def b():
    print("Ответ: нет.")
    print("")

def c():
    print("Зачем ты нажал сюда?")
    print("")

def next():
    global btnB, btn4, btn5, btn6

    if btn1:
        btn1.destroy()
    if btn2:
        btn2.destroy()
    if btn3:
        btn3.destroy()
    if btnN:
       btnN.destroy()

    btnB = Button(tk, text="Предыдущая страница.", command=back)
    btn4 = Button(tk, text="Много НЕ антистрессов не бывает!", command=d)
    btn5 = Button(tk, text="Мятый антистресс.", command=e)
    btn6 = Button(tk, text="Последний не антистрес.", command=f)

    btnB.pack()
    btn4.pack()
    btn5.pack()
    btn6.pack()

def back():
    global btn1, btn2, btn3, btnN

    if btnB:
        btnB.destroy()
    if btn4:
        btn4.destroy()
    if btn5:
        btn5.destroy()
    if btn6:
        btn6.destroy()

    btn1 = Button(tk, text="Точно антистресс.", command=a)
    btn2 = Button(tk, text="Это антистресс?", command=b)
    btn3 = Button(tk, text="Точно не антистресс.", command=c)
    btnN = Button(tk, text="Следущая страница.", command=next)

    btn1.pack()
    btn2.pack()
    btn3.pack()
    btnN.pack()

def d():
    print("Точнее, бывает.")
    print("")

def e():
    print("А вы поняли?")
    print("")

def f():
    print("А вот это антистрес!")
    print("")

back()
tk.mainloop()
→ Ссылка