Можно ли при выборе дочернего окна tkinter на первый план вывести и родительское окно?

Пишу программу на Python 3.x с использованием tkinter.

У меня есть главное окно (Tk) и дочернее (Toplevel). Дочернее окно открывается при нажатии на кнопку в главном окне.

Допустим пользователь открыл дочернее окно, после чего перешел в другую программу (браузер, папку и т.п.). После чего снова перешел в дочернее окно моей программы.

Можно ли как-нибудь сделать так, чтобы при выборе дочернего окна на первый план выводилось и родительское окно? Либо как-то отслеживать, что дочернее окно находится в фокусе или выбрано пользователем?

Ниже представлен самый простой пример кода:

from tkinter import *

def open_child_window():
    child = Toplevel(root)
    child.title('Child') 


root = Tk()
root.title('Parent')


button = Button(root, text="Open child window", 
                command=open_child_window)

button.grid(row=0, column=0)

root.mainloop()

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

Автор решения: n1tr0xs

Как вариант, можно сделать так, но я думаю, что есть вариант и получше.

def focus_root(root, child):
    root.focus()
    child.unbind('<FocusIn>')
    child.focus()
    child.bind('<Leave>', lambda *args: child.bind('<FocusIn>', lambda *args: focus_root(root, child)))
    
def open_child_window():
    child = Toplevel(root)
    child.title('Child')
    child.bind('<FocusIn>', lambda *args: focus_root(root, child))
→ Ссылка