繁体   English   中英

如何更改ttk按钮的颜色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM