как выделить радио кнопки одну за другой в следующем коде - PullRequest
0 голосов
/ 07 января 2019

Как выделить переключатели одну за другой в следующем коде?

Следующий код находится в рабочем состоянии, но мы не можем автоматически выделить кнопку (сканирование):

import tkinter as tk

root = tk.Tk()
v = tk.IntVar()
v.set(1)  # initializing the choice, i.e. a

languages = [
    ("a",1),
    ("b",2),
    ("c",3),
    ("d",4),
    ("e",5)
]

def ShowChoice():
    print(v.get())

tk.Label(root, 
         text="""Choose your favourite 
programming language:""",
         justify = tk.LEFT,
         padx = 36).pack()

for val, language in enumerate(languages):
    tk.Radiobutton(root, 
                  text=language,
                  padx = 20, 
                  variable=v, 
                  command=ShowChoice,
                  value=val).pack(anchor=tk.W)


root.mainloop()

Скриншот:

Screenshot

1 Ответ

0 голосов
/ 07 января 2019

сохраните каждую из ваших радиокнопок в список ... измените его на

radios = []
r_config = {'padx':20, 'variable':v, 'command':ShowChoice}
for val, language in enumerate(languages):
    radios.append(tk.Radiobutton(root,  text=language,     
                  value=val,**r_config))
    radios[-1].pack(anchor=tk.W)

тогда вы можете ссылаться на их конфигурацию позже в методе обновления

selected = -1
def color_tick():
    global selected # ... ewww
    radios[selected].config(bg=root.cget('bg'))
    selected = (selected+1)%len(radios)
    radios[selected].config(bg="yellow")
    # schedule a new call in 1 second
    root.after(1000,color_tick)

color_tick() # start the ticks
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...