我正在为应用程序使用tkinter
的主题(ttk
)GUI工具包。尝试对主窗口中的小部件应用一些统一的样式:
s = ttk.Style()
s.configure('.', background='#eeeeee')
s.configure('.', font=('Helvetica', 14))
self.configure(background='#eeeeee')
字体更改效果很好,但是由于某些原因,窗口小部件(即
ttk.Label
和ttk.Button
)似乎无法反射(reflect)背景更改,由于窗口背景与窗口小部件之间的对比,因此在视觉上非常明显。如果我检查设置为:label1.cget('background')
它返回
''
,所以很明显它没有被设置,但是鉴于ttk.Label和styles的文档,我不明白这是怎么回事。尝试直接为单个标签设置背景:label1.configure(background='#eeeeee')
也不起作用(即不变)。
有任何想法吗?
最佳答案
我也遇到了这个问题,我相信问题是ttk的“aqua”主题,这是OSX上的默认主题,它不考虑许多小部件中的背景颜色配置。我通过将主题设置为“默认”来解决了该问题,该主题立即导致所有小部件的背景均按指定的方式显示。
这是我的基本示例:
import tkinter
from tkinter import ttk
root = tkinter.Tk()
style = ttk.Style(root)
style.theme_use('classic')
style.configure('Test.TLabel', background= 'red')
text = ttk.Label(root, text= 'Hello', style= 'Test.TLabel')
text.grid()
root.mainloop()
尝试将
style.theme_use('classic')
更改为style.theme_use('aqua')
以查看问题。关于python - Tkinter的TTK小部件忽略背景色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23750141/