Tkinter:選択した場合のラジオボタンの地色
Aug 19 2020
私がRadiobutton
欲しい沈んだボタンの外観で表示しました:
- 選択されていない場合、白い背景に黒いテキスト、
- 選択すると、濃い灰色の背景に白いテキストが表示されます。
現在、背景は灰色ですが、選択すると白いテキストが表示されないため、コントラストが低下します。

for (lbl, val) in [("A", "a"), ("B", "b"))]:
rb = tk.Radiobutton(tab,
text=lbl,
variable=v,
value=val,
command=select,
selectcolor=gray,
indicatoron=0,
width=25, pady=7.5)
rb.pack(...)
tk.Radiobutton
を構成するオプションがありますselectcolor
。これは、選択したときの背景色ですが、選択したときの前景色にはそのようなオプションがないようです。
私は1つが指定することでこれを実現するかもしれないと思ったcommand
だろう選択にトリガーそのラジオボタンで選択されているが、これはむしろ私が見つけた、彼らが設定した変数の値だけ、より、外部から身をラジオボタンのプロパティにアクセスする必要になりますこれまでのところ、これを行う方法はありません。rb.config
foreground
の方針に沿ってオプションを達成するにはどうすればよいselectforeground
ですか?
回答
1 Atlas435 Aug 19 2020 at 16:08
これには匿名関数を使用します。
import tkinter as tk
def select(rb):
rb.config(foreground='white')
for rb_ in rbs:
if rb_ != rb:
rb_.config(fg='black')
root = tk.Tk()
rbs=[]
def do_buttons():
for _ in range(11):
v=tk.IntVar()
val = 1
rb = tk.Radiobutton(root,
text="A",
variable=v,
value=val,
selectcolor='gray',
indicatoron=0,
width=25, pady=7.5)
rb.config(command=lambda arg=rb:select(arg))
rb.pack()
rbs.append(rb)
b = tk.Button(root, text='click', command=do_buttons)
b.pack()
root.mainloop()