Как в 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
→ Ссылка
К примеру всплывающие окна. Как сделать, чтобы при нажатии это окно не открывалось, если уже открыта его копия?
- Добавляете в ваш класс булевую переменную, например:
popup_init: bool = False, - В методе, который открывает попап проверяете значение данной переменной, и не даёте открыть его повторно или деактивируете клавишу поп-апа если значение
is False. - При нажатии на клавишу открытия поп-апа или при закрытии его меняете значение переменной.
Автор решения: Булат
→ Ссылка
В итоге, в коде можно использовать способ о котором сказал Андрей,но как по мне, проще просто зафокусить окно с помощью:
root.grab_set()
Или же:
root.focus_get()