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