Анти-антистрессы = стрессы стрессы стрессы. (Короче у меня один раз удаляет все кнопки а потом вообще не удаляет кнопок.)
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 шт):
Вам бы сперва учебник полистать, но постараюсь навести на некоторые мысли:
Вот вы сохраняете кнопку в переменную: 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()