tkinter 为复选框中的勾号和文本设置不同的颜色

问题描述 投票:0回答:1

我正在尝试在 tkinter 中使用复选框。我的 GUI 有一个深色主题,所以我想在深色背景上使用白色文本。不幸的是,如果我通过设置

fg="white"
bg="black"
来做到这一点,那么除了出现勾号的框保持白色之外,我会得到黑色背景。这意味着刻度在白色背景上是白色的,因此不可见。

是否有某种方法可以更改刻度线出现的框的背景,或者最好将刻度线的颜色设置为独立于文本的其余部分,即,这样我可以让支票本身成为白色上的黑色刻度线背景,而小部件的其余部分由黑色背景上的白色文本组成。

为了说明问题:

import tkinter as tk

root = tk.Tk()
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text="example", variable=var, bg="black", fg="white")
checkbutton.grid()
tk.mainloop()
python tkinter
1个回答
0
投票

所以我想在深色背景上使用白色文本。不幸的是如果我 通过设置 fg="white" bg="black" 来做到这一点,然后我得到黑色背景 除了出现勾号的框保持白色。

问题可以解决。

  • 创建 on_button_toggle() 函数。
  • 更新
    checkbutton.config
    on_button_toggle() function.
  • 添加参数
    onvalue=1
    offvalue=0
    command=on_button_toggle
    Checkbutton
    小部件中。
  • 在函数之外添加
    checkbutton.config
  • checkbutton.flash()
     之前添加 
    mainloop()

片段:

import tkinter as tk

root = tk.Tk()
var =  tk.BooleanVar()

def on_button_toggle():
    if var.get() == 1:
        checkbutton.config(bg="white")
    else:
        checkbutton.config(bg="black")
        
checkbutton = tk.Checkbutton(root, text="example", variable=var, bg="black", fg="white",
                             onvalue=1, offvalue=0 ,
                             command=on_button_toggle)

checkbutton.config(bg="lightgrey", fg="blue", font=("Arial", 12), 
                   selectcolor="green", relief="raised", padx=10, pady=5)

checkbutton.grid()
checkbutton.flash()
tk.mainloop()

截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.