Для автоматического закрытия всех дочерних окон при закрытии главного окна вам нужно использовать метод `destroy()` для закрытия каждого отдельного окна. Например, если у вас есть главное окно `root` и дочерние окна `child1`, `child2`, `child3`, то вы можете использовать следующий код для автоматического закрытия всех дочерних окон при закрытии главного окна:
```python
root.protocol("WM_DELETE_WINDOW", lambda: [child.destroy() for child in root.winfo_children() if isinstance(child, Toplevel)])
```
Чтобы закрыть дополнительное окно (root2), созданное при нажатии определенной кнопки в основном окне (root), вам необходимо сохранить ссылку на это окно при его создании и затем использовать метод `destroy()` для закрытия его программно. Например, если у вас есть кнопка `button` в главном окне `root`, которая создает дополнительное окно `root2`, то вы можете использовать следующий код для программного закрытия `root2`:
```python
root2 = None
def create_child_window():
global root2
root2 = Toplevel(root)
root2.title("Child Window")
# Другой код для создания окна
button = Button(root, text="Create Child Window", command=create_child_window)
button.pack()
def close_child_window():
global root2
if root2:
root2.destroy()
root.protocol("WM_DELETE_WINDOW", close_child_window)
```
Теперь при закрытии главного окна `root`, дополнительное окно `root2` будет закрыто программно, чтобы избежать его оставания открытым.