我正在为应用程序使用tkinter的主题(ttk)GUI工具包。尝试对主窗口中的小部件应用一些统一的样式:

s = ttk.Style()
s.configure('.', background='#eeeeee')
s.configure('.', font=('Helvetica', 14))
self.configure(background='#eeeeee')

字体更改效果很好,但是由于某些原因,窗口小部件(即ttk.Labelttk.Button)似乎无法反射(reflect)背景更改,由于窗口背景与窗口小部件之间的对比,因此在视觉上非常明显。如果我检查设置为:
label1.cget('background')

它返回'',所以很明显它没有被设置,但是鉴于ttk.Labelstyles的文档,我不明白这是怎么回事。尝试直接为单个标签设置背景:
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/

10-10 16:34