[英]How to change the color of ttk button
我在 Windows 上使用 Python 3.x。
我的问题是我想通过完全更改其背景和前景色来自定义ttk
的按钮小部件。 但到目前为止,我一直没有成功。
我想要的按钮是:
我阅读了ttk.Style
指南并使用了他们的代码:
ttk.Style().configure("TButton", padding=6, relief="flat",
background="#000")
btn = ttk.Button(text="Sample")
btn.pack()
但它正在改变边框颜色而不是整个按钮背景。 这是输出:
请帮我实现我想要的按钮。
不幸的是,没有一种简单的方法可以从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'
>>>
虽然它不像使用 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()
希望这可以帮助。
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 将所有按钮更改为您“想要”的按钮,则对我有用
简短示例:
from tkinter import ttk
from tkinter import Tk
root = Tk()
style = ttk.Style()
button_1 = ttk.Button(root, text='click me')
style.theme_use('alt')
style.configure('TButton', font=('American typewriter', 14), background='#232323', foreground='white')
style.map('TButton', background=[('active', '#ff0000')])
button_1.pack()
root.mainloop()
长示例:
from tkinter import *
from tkinter import ttk
class App:
def __init__(self):
# Window setup
self.root = Tk()
self.root.title('BUTTONS')
WIDTH, HEIGHT = 300, 500
INITIAL_X_POSITION, INITIAL_Y_POSITION = 450, 200
self.root.geometry(f'{WIDTH}x{HEIGHT}+{INITIAL_X_POSITION}+{INITIAL_Y_POSITION}')
self.root.resizable(0, 0)
self.style = ttk.Style()
# Layout
self.button_1 = ttk.Button(self.root, text='click me', command=self.show_me_pi)
self.style.theme_use('alt')
self.style.configure('TButton', font=('American typewriter', 14), background='#232323', foreground='white')
self.style.map('TButton',
background=[('active', '#ff0000'), ('disabled', '#f0f0f0')]
)
self.button_1.pack()
self.button_2 = ttk.Button(self.root, text='click me', state='disabled')
self.button_2.pack()
self.root.mainloop()
def show_me_pi(self):
py_label = Label(self.root, text='3.14159', font=('American typewriter', 20))
py_label.pack()
app_runner = App()
import tkinter as tk
btn = tk.fButton(text="Sample", bg = "red") #Refer line 2625 in tkinter code
btn.pack()
有关更多信息,请转到 Tkinter 代码,请转到第 2625 行。
在这里,您将找到问题的解决方案。
我这里使用tk.fButton
因为Tkinter的版本它doesen't支持tk.Button
,如果u与得到错误tk.fButton
然后用tk.Button
左寄托都将保持相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.