Python Tkinter:选中时,单选按钮放弃环绕颜色

Python Tkinter:选中时,单选按钮放弃环绕颜色,python,tkinter,Python,Tkinter,我有Radiobutton以凹陷按钮外观显示,我希望: 未选中时,白色背景上的黑色文本 选中时,深灰色背景上的白色文本 目前,我只有灰色背景,但选择时没有白色文本,这使得对比度差 tk.Radiobutton有一个配置selectcolor的选项,选中时它是背景色,但选中时它似乎没有为前景色提供这样的选项 我认为可以通过指定一个在选择时触发的命令来实现这一点,该命令将rb.config选中的单选按钮上的前台,但这需要从外部访问单选按钮本身的属性,而不仅仅是它们设置的变量的值,到目前为止我还

我有
Radiobutton
以凹陷按钮外观显示,我希望:

  • 未选中时,白色背景上的黑色文本
  • 选中时,深灰色背景上的白色文本
目前,我只有灰色背景,但选择时没有白色文本,这使得对比度差

tk.Radiobutton
有一个配置
selectcolor
的选项,选中时它是背景色,但选中时它似乎没有为前景色提供这样的选项

我认为可以通过指定一个在选择时触发的
命令来实现这一点,该命令将
rb.config
选中的单选按钮上的
前台
,但这需要从外部访问单选按钮本身的属性,而不仅仅是它们设置的变量的值,到目前为止我还没找到办法

如何实现沿
选择前台
行的选项?

为此使用a:

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()

wouldnt
rb.config(front='white')
这行吗?@Cool Cloud否,因为我只选择了哪个按钮的白色文本,而不是所有按钮。哦,你有不止一个。是的,我第一个版本的帖子中的代码片段过于简化。谢谢你的回答,很抱歉,我包含了我实际代码的一个过于简化的版本;请参阅更新。我的问题是我有几个单选按钮(因此没有一个
rb
),我找不到一种方法来访问哪个按钮是所选的和要配置的按钮。@lemontree更新了我的答案,如果缺少什么或您有问题,请告诉我。哦,这很有意义。我尝试过类似的方法,但在实例化时就已经指定了命令,并且遇到了一个问题,即我显然无法使用刚刚定义的
rb
变量,并且没有看到在初始赋值之后我可以简单地
config
rb
。这很有效。非常感谢。我修改了您的
select
功能,这样,现在不再选择的所有其他单选按钮都会更改回
fg=black
:在创建时将每个
rb
保存到列表
rbs
,然后在
select
中为rbs中的rb添加
:if rb!=rb:rb.config(fg=black)
;完美的
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()