2014-12-07 3 views
6

Я использую Python 3.x для Windows.Как изменить цвет кнопки ttk

Моя проблема заключается в том, что я хочу настроить виджет кнопки 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

Просьба помочь мне достичь моей нужную кнопку.

ответ

7

К сожалению, нет простого способа изменить передний план кнопки из библиотеки 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' 
>>> 
+0

Спасибо, что это сработало, но есть ли какие-либо примеры с ttk ?? – maq

+0

Я хочу сделать это с ttk @iCodez – maq

+0

Я не уверен, что это возможно (я мог ошибаться, хотя). 'ttk.Button' - это особый тип кнопки, который должен быть идентичен стандартной кнопке Windows. Если вы хотите по-другому взглянуть, то нет смысла использовать 'ttk.Button'. Обычная кнопка Tkinter делает то, что вы хотите, просто отлично. – iCodez

2
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

Смежные вопросы