我在Windows上使用Python 3.x.
我的问题是我想通过完全改变其背景和前景色来自定义ttk
的按钮小部件。但到目前为止,我一直没有成功。
我想要的按钮是:
我阅读了ttk.Style
指南并使用了他们的代码:
ttk.Style().configure("TButton", padding=6, relief="flat",
background="#000")
btn = ttk.Button(text="Sample")
btn.pack()
但是它改变了边框颜色而不是整个按钮bakground。这是输出:
请帮助我实现我想要的按钮。
答案 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()
这就是它的样子:
另外,我挑选的绿色阴影只是我认为非常接近你想要的一个例子。但您可以指定所需的任何十六进制颜色代码。如果您需要将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
左一切将保持不变