Tkinter: Radiobutton forground color เมื่อเลือก
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
ซึ่งเป็นสีพื้นหลังเมื่อเลือก แต่ดูเหมือนว่าจะไม่มีตัวเลือกดังกล่าวสำหรับสีพื้นหน้าเมื่อเลือก
ฉันคิดว่าอาจทำได้โดยการระบุท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()