Как в Tkinter сделать так, чтобы одновременно могло быть открыто лишь одно такое окно?

К примеру всплывающие окна. Как сделать, чтобы при нажатии это окно не открывалось, если уже открыта его копия?

Самый примитивный пример:

from tkinter import *
head = Tk()

head.geometry('800x500')
head.title('Лаунчер')

def new_window():
    win = Tk()
    win.geometry('300x200')
    win.title('Ошибка')
    win_frame = Frame(new_window)
    win_frame.place(relwidth=1, relheight=1)
    win.mainloop()

frame = Frame(head)
frame.place(relwidth = 1,relheight = 1)

button = Button(frame,text = 'Далее',command = new_window)
button.place(x = 350,y = 370,width = 130,height = 50)

head.mainloop()

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

Автор решения: Andrew Holovko

К примеру всплывающие окна. Как сделать, чтобы при нажатии это окно не открывалось, если уже открыта его копия?

  1. Добавляете в ваш класс булевую переменную, например: popup_init: bool = False,
  2. В методе, который открывает попап проверяете значение данной переменной, и не даёте открыть его повторно или деактивируете клавишу поп-апа если значение is False.
  3. При нажатии на клавишу открытия поп-апа или при закрытии его меняете значение переменной.
→ Ссылка
Автор решения: Булат

В итоге, в коде можно использовать способ о котором сказал Андрей,но как по мне, проще просто зафокусить окно с помощью:

root.grab_set()

Или же:

root.focus_get()
→ Ссылка
Автор решения: Stallkerud

Надеюсь поможет:

root.grab_set()
→ Ссылка