Tkinter Labelframe奇怪的行为:在标签中应用文本时,边框颜色消失

Tkinter Labelframe奇怪的行为:在标签中应用文本时,边框颜色消失,tkinter,Tkinter,我的标签框架只能处理highlightbackground和highlightcolor选项,只要我没有在text选项中放入一些文本 这是我的代码,请自行尝试,如果您在LabelFrame中添加一些文本,边框将消失 将tkinter作为tk导入 def change_bg(小部件): 小部件['highlightbackground']='red' 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': root=tk.tk() frame=tk.LabelFra

我的标签框架只能处理
highlightbackground
highlightcolor
选项,只要我没有在
text
选项中放入一些文本

这是我的代码,请自行尝试,如果您在
LabelFrame
中添加一些文本,边框将消失

将tkinter作为tk导入
def change_bg(小部件):
小部件['highlightbackground']='red'
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
frame=tk.LabelFrame(根,text=),高度=100,宽度=100,
highlightbackground=“绿色”,highlightcolor=“绿色”,highlightthickness=1,bd=0)
button=tk.button(root,text=“Paint”)
按钮['command']=lambda wgt=frame:change\u bg(wgt)
frame.pack()
button.pack()
root.mainloop()

在Mac上测试时,我能够重现这一点,但它在Windows上运行良好。我相信这是Mac根本不支持的事情之一。您可以尝试将
LabelFrame
嵌套在带有边框的
Frame
中,并更改其背景色,如下图所示

将tkinter作为tk导入
def change_bg(小部件):
小部件['bg']='red'
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
基本帧=tk.frame(根,bd=1,bg='green')
基本框架包()
frame=tk.LabelFrame(基本框架,text=“asdas”,高度=100,宽度=100,bd=0)
button=tk.button(root,text=“Paint”)
按钮['command']=lambda wgt=base\u帧:更改\u bg(wgt)
frame.pack()
button.pack()
root.mainloop()

我终于找到了一个使用clam主题的Mac解决方案:

到目前为止,下面这张图片对我很有用,它允许用不同的颜色给多个Labelframe上色,包括Label和bordercolor

from tkinter import *
from tkinter import ttk


    root = Tk()
    
    edit_labelframe_color_style = ttk.Style()
    edit_labelframe_color_style.theme_use('clam') #only theme to handle bordercolor for labelframe
    
    edit_labelframe_color_style.configure('red.TLabelframe', bordercolor='red',background='white')
    edit_labelframe_color_style.configure('red.TLabelframe.Label', foreground='red',background='white')
    
    edit_labelframe_color_style.configure('green.TLabelframe', bordercolor='green',background='white')
    edit_labelframe_color_style.configure('green.TLabelframe.Label', foreground='green',background='white')
    
    labelframe = ttk.LabelFrame(root, text="Group", style='red.TLabelframe',height=200, width=400)
    labelframe.grid(padx=20, pady=20)
    labelframe.grid_propagate(0)
    
    labelframe1 = ttk.LabelFrame(root, text="Group", style='green.TLabelframe',height=200, width=400)
    labelframe1.grid(padx=20, pady=200)
    labelframe1.grid_propagate(0)
    
    
    
    root.mainloop()

对我来说,当我点击按钮时,无论文本是什么,突出显示的颜色都会变为红色。你的窗口怎么了?只要文本是空的,它对我也有效。如果我在标签的文本中添加了一些内容,我甚至连边框都没有了。它全是白色的。这在Windows 10上不会发生,所以可能是操作系统特有的错误。