如何更改ttk按钮的颜色

时间:2014-12-07 21:21:40

标签: python button tkinter ttk

我在Windows上使用Python 3.x.

我的问题是我想通过完全改变其背景和前景色来自定义ttk的按钮小部件。但到目前为止,我一直没有成功。

我想要的按钮是:

enter image description here

我阅读了ttk.Style指南并使用了他们的代码:

ttk.Style().configure("TButton", padding=6, relief="flat",
   background="#000")

btn = ttk.Button(text="Sample")
btn.pack()

但是它改变了边框颜色而不是整个按钮bakground。这是输出:

enter image description here

请帮助我实现我想要的按钮。

4 个答案:

答案 0 :(得分:8)

不幸的是,从ttk库中更改按钮的前景并不是一种简单的方法。它始终是您图片中的标准Windows灰色。

但是,如果设置正确的选项,您可以轻松获得正常tkinter.Button所需的内容。下面是一个示例脚本:

import tkinter as tk

root = tk.Tk()
btn = tk.Button(root, 
                bg='#000000',
                fg='#b7f731',
                relief='flat',
                text='hello button',
                width=20)
btn.pack()

root.mainloop()

这就是它的样子:

enter image description here

另外,我挑选的绿色阴影只是我认为非常接近你想要的一个例子。但您可以指定所需的任何十六进制颜色代码。如果您需要将RGB值转换为十六进制,一个简单的技巧就是使用str.format,如下所示:

>>> rgb = (183, 247, 49)
>>> '#{:02x}{:02x}{:02x}'.format(*rgb)
'#b7f731'
>>>

答案 1 :(得分:6)

尽管它不像Tk按钮那样简单,但有可能。在ttk中,如果将theme_use属性设置为以下任意一项:(“ winnative”,“ clam”,“ alt”,“ default”,“ classic”,“ vista”,“ xpnative”),则应该可以进行修改默认行为。我设置了“ style.map”属性,以避免由于鼠标悬停而导致背景颜色发生变化(按钮的状态始终为“活动”)。

import tkinter as tk
from tkinter import ttk 

style = ttk.Style()
style.theme_use('alt')
style.configure('TButton', background = 'red', foreground = 'white', width = 20, borderwidth=1, focusthickness=3, focuscolor='none')
style.map('TButton', background=[('active','red')])

root = tk.Tk()
button = ttk.Button(root,text='Quit')
button.place(relx=0.3,rely=0.4)  
root.mainloop()      

希望这会有所帮助。

答案 2 :(得分:4)

import ttk

root.style = ttk.Style()
#root.style.theme_use("clam")
style.configure('TButton', background='black')
style.configure('TButton', foreground='green')
button= ttk.Button(self, text="My background is black and my foreground is green.")

如果您想将所有按钮更改为您希望",使用Python 2.7和Tkinter 8.6

,那么

对我有用

答案 3 :(得分:-1)

import tkinter as tk

btn = tk.fButton(text="Sample", bg = "red") #Refer line 2625 in tkinter code
btn.pack()

更多去 Tkinter 代码,去第 2625 行。
在这里,您将找到问题的解决方案。

我在这里使用 tk.fButton 因为在 tkinter 版本中它不支持 tk.Button,如果您在 tk.fButton 中遇到错误,则使用 tk.Button 左一切将保持不变