вижу вижу несколько проблем. Основным из них является то, что вы не можете вызвать newwindow.destroy()
, потому что newwindow
- это функция, а не виджет tk.Toplevel
. Другим является janela1.destroy()
, уничтожающий себя, и это корневое окно.
Вместо того, чтобы уничтожать окна, вы можете просто withdraw()
их. Вот код, который, я думаю, делает то, что вы хотите:
from tkinter import *
import tkinter as tk
def make_newwindow2():
# newwindow.destroy()
global newwindow2
newwindow.withdraw()
newwindow2 = tk.Toplevel()
newwindow2.title('Nível da grama região 3')
newwindow2.geometry('580x520')
labl3 = Label(newwindow2,
text='A foto do nível da grama na região 3 foi tirada:\n', font=30)
labl3.place(x=110, y=10)
tk.Button(newwindow2, text='Fim', command=root.quit).place(x=250, y=470)
def make_newwindow():
# janela1.destroy()
global newwindow
root.withdraw()
newwindow = tk.Toplevel()
newwindow.title('Nível da grama região 2')
newwindow.geometry('580x520')
labl2 = Label(newwindow,
text='A foto do nível da grama na região 2 foi tirada:\n', font=30)
labl2.place(x=110, y=10)
tk.Button(newwindow, text='Próximo', command=make_newwindow2).place(x=250, y=470)
root = tk.Tk()
root.title('Nível da grama região 1')
root.geometry("580x520")
labl1 = Label(root, text='A foto do nível da grama na região 1 foi tirada: ', font=30)
labl1.place(x=110, y=10)
tk.Button(root, text='Próximo', command=make_newwindow).place(x=250, y=470)
root.mainloop()
Что-то еще, что я изменил, хотя это не было строго необходимо, было то, как вы присваивали результат вызова place()
именамвиджеты. Так как place()
(и pack()
и grid()
) всегда возвращают None
, это значение переменной, в результате которой получится переменная, а этого никогда не будет. Вам здесь это сходит с рук, но только потому, что на эти имена больше не ссылаются.