Почему при использовании Python Tkinter открытое окно меняет поведение переключателей в каком-либо другом окне?
#!/usr/bin/env python3
import tkinter as tk
def close_button():
raise SystemExit
# open first window
root1 = tk.Tk()
# open second window and display radio buttons
root2 = tk.Tk()
root2.protocol('WM_DELETE_WINDOW', close_button)
var = tk.IntVar()
var.set(1)
tk.Radiobutton(root2, variable = var, value = 1).pack()
tk.Radiobutton(root2, variable = var, value = 2).pack()
tk.Radiobutton(root2, variable = var, value = 3).pack()
tk.Button(root2, text = 'print selection', command = lambda : print(var.get())).pack()
root1.mainloop()
root2.mainloop()
Эта программа открывает два окна, соответствующие root1
и root2
. Вот как выглядит второе окно.

Серые точки исчезают, если я нажимаю любую из переключателей, как показано ниже.

Однако при нажатии кнопки print selection
выводится «1» независимо от выбора!
С другой стороны, если root1
не создано, переключатели не ведут себя неправильно.

При нажатии на print selection
печатается правильное значение: «1», «2» или «3», в зависимости от того, какой из трех выбран.
Итак, мой вопрос: почему переключатели root2
плохо работают, когда открыто другое окно root1
? (Я использую классы в своей программе, но в этом примере я сократил их до минимума.)
Запись оператора root1.mainloop()
сразу под root1 = tk.Tk()
не вариант, потому что мое приложение должно одновременно открывать оба окна.