tkinter не может изменить внешний вид радиокнопки после нажатия на нее - PullRequest
1 голос
/ 19 июня 2019

Я прочитал несколько примеров, и мой код кажется похожим, но когда я нажимаю переключатель, он не становится зеленым, как ожидалось.

код ожидает CSV-файл со следующей строкой

ref, Lang1, Lang2, Lang3, Lang4

Я знаю, что код выполняется правильно, с использованием отладки операторов печати через весь код - многие удалены, чтобы упростить код

import tkinter as tk
import csv as csv

root = tk.Tk()
Sel_Lang = tk.StringVar()

def radioselect():
    global lasthit
    temp = int(Sel_Lang.get()) -1
    buttonlist[temp].config(bg='green')
    buttonlist[temp].grid(row=temp, column=1)
    if lasthit != temp:
        print('last hit greater then 0')
        buttonlist[lasthit].config(bg='white')
        buttonlist[lasthit].grid(row=lasthit, column=1)
    lasthit = temp

with open('Language.csv') as csvfile:
    Langptr = csv.reader(csvfile, delimiter=',')
    row1 = next(Langptr)   #read the header row

langs = (len(row1))
lang=1

while lang < langs:
    ##print(row1[lang])
    MODES.append((row1[lang], lang))
    lang = lang + 1

MODES=[]
lasthit = 0
arraycntr = 0
buttonlist = [0] * len(MODES)
for text, mode in MODES:
    '''  display for the user to select Language
    language choices are taken from the first row in the Language.csv file
    '''
    buttonlist[arraycntr] = tk.Radiobutton(root, height=2, width=15, 
        borderwidth=10, text=text, font=("Arial", 24, "bold"), bg='white',
        variable=Sel_Lang, value=mode, indicatoron=0)
    buttonlist[arraycntr].config(command = lambda :radioselect())
    buttonlist[arraycntr].grid(row=mode, column=1)
    print('In for loop ', arraycntr, text, mode, 
        len(MODES),buttonlist[arraycntr])
    arraycntr += 1

root.mainloop()

сообщений об ошибках нет, но нажатая кнопка не горит зеленым, как ожидалось

1 Ответ

0 голосов
/ 19 июня 2019

Вам необходимо добавить опцию selectcolor

buttonlist[arraycntr] = tk.Radiobutton(root, height=2, width=15, 
  borderwidth=10, text=text, font=("Arial", 24, "bold"), bg='white',
  variable=Sel_Lang, value=mode, indicatoron=0, selectcolor='green')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...