Вначале на ум приходит пара разных способов.
Один из способов - просто отключить взаимодействие со всем окном, это можно сделать с помощью метода .grab_set()
во вновь созданном окне..
def create_window():
window = tk.Toplevel(root)
window.grab_set()
Этот метод означает, что созданное окно теперь сфокусировано, когда сфокусированное окно будет уничтожено, вы снова сможете взаимодействовать с другими окнами.
Другим способом было быпусть ваша функция create_window()
возьмет кнопку в качестве входа, затем используйте .configure(state="disabled")
на кнопке
def create_window(button):
window = tk.Toplevel(root)
button.configure(state="disabled")
root = tk.Tk()
b = tk.Button(root, text="Create new window", command=lambda: create_window(b))
b.pack()
Обратите внимание, что поскольку ваша функция требует ввода, вам нужно использовать command= lambda:create_window(b)
, так чтотогда create_window()
не запускается при создании кнопки.
Однако теперь вам придется написать другую функцию, которая изменит состояние кнопок обратно на .configure(state="normal")
, когда новое окно будет уничтожено.например,
def create_window(button):
window = tk.Toplevel(root)
def on_close():
button.configure(state="normal")
window.destroy()
button.configure(state="disabled")
window.protocol("WM_DELETE_WINDOW", on_close)