Почему значение по умолчанию не устанавливается в радиокнопке tkinter? - PullRequest
0 голосов
/ 18 января 2020

У меня есть код, показанный ниже, который будет перебирать список имен в словаре, а затем создавать переключатели. Перед итерацией установите / инициализируйте значение по умолчанию. Почти тот же код установлен по-другому, и значения по умолчанию не устанавливаются, и я не уверен, что мне не хватает. Мы будем благодарны за любую помощь.

Рабочий код

enter image description here

from tkinter import *

root = Tk()
root.title('Trevieew API App')
methods = [
             ('Monday', 1),
             ('Tuesday', 2),
             ('Wednesday', 3),
             ('Thursday', 4),
             ('Friday', 5)
    ]
_row = 0
v = IntVar()
v.set(1)
for method, value in methods:
    b = Radiobutton(root, text=method, variable=v, value=value)
    _row += 1
    b.grid(row=_row, column=0, sticky=W)

root.mainloop()

НЕ рабочая копия

enter image description here

from tkinter import *


class App:

    def __init__(self, master):
        self.master = master
        master.title('App Tool')
        self.radiobuttons()

    def radiobuttons(self):
        _row = 0
        methods = [
                 ('Monday', 1),
                 ('Tuesday', 2),
                 ('Wednesday', 3),
                 ('Thursday', 4),
                 ('Friday', 5)
             ]
        v = IntVar()
        v.set(1)
        for method, value in methods:
            b = Radiobutton(root, text=method, variable=v, value=value)
            _row += 1
            b.grid(row=_row, column=0, sticky=W)


root = Tk()
my_gui = App(root)
root.mainloop()

1 Ответ

2 голосов
/ 18 января 2020

Проблема может быть в том, что v в классе является локальной переменной, которая уничтожается, когда заканчивается метод radiobuttons. Используйте self., чтобы сохранить его.

    self.v = IntVar()
    self.v.set(1)

    for method, value in methods:
        b = Radiobutton(root, text=method, variable=self.v, value=value)
        _row += 1
        b.grid(row=_row, column=0, sticky=W)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...