Я хотел бы иметь окно с одной кнопкой (с текстом «Клик»). Когда я нажимаю кнопку, должно открыться новое окно. И в этом втором окне я хотел бы иметь 2 радиокнопки и кнопку (с текстом «Печать»). Нажатие на эту кнопку («Печать») должно вывести текущее значение переменной my_variable , которая указывает, какая радиопереключатель выбрана.
Первый код пропускает первое окно, но выводит его на печать правильные значения. Второй код, в который я добавил первое окно (с помощью кнопки «Нажать», открывающую второе окно), всегда печатает значение по умолчанию переменной my_variable . Что я должен изменить, чтобы получать текущее значение при каждом нажатии кнопки «Печать»?
Я использую tkinter с Python 3.7.
Рабочий код:
import tkinter as tk
def function():
"""That function print the current value of my_variable, depending on which radiobutton was choosen."""
value = my_variable.get()
print(value)
window = tk.Tk()
window.title("Title")
window.geometry('200x200')
my_variable = tk.IntVar(value=0)
rbtn1 = tk.Radiobutton(window, text='one', value=1, variable=my_variable)
rbtn1.grid(row=0, column=0)
rbtn2 = tk.Radiobutton(window, text='two', value=2, variable=my_variable)
rbtn2.grid(row=1, column=0)
button = tk.Button(window, text="Print", command=function)
button.grid(row=2, column=0)
window.mainloop()
Не рабочий код:
import tkinter as tk
def on_click():
def function():
"""That function shoud print the current value of my_variable, depending on which radiobutton was choosen. But it prints the default value instead."""
value = my_variable.get()
print(value)
window = tk.Tk()
window.title("Title")
window.geometry('200x200')
my_variable = tk.IntVar(value=0)
rbtn1 = tk.Radiobutton(window, text='one', value=1, variable=my_variable)
rbtn1.grid(row=0, column=0)
rbtn2 = tk.Radiobutton(window, text='two', value=2, variable=my_variable)
rbtn2.grid(row=1, column=0)
button = tk.Button(window, text="Print", command=function)
button.grid(row=2, column=0)
window_main = tk.Tk()
window_main.title("Title main")
window_main.geometry('400x400')
button = tk.Button(window_main, text="Click", command=lambda: on_click())
button.grid(row=0, column=0)
window_main.mainloop()