Как изменить цвет ttk.progressBar в python

Кто-нибудь знает, как я могу изменить цвет моего ttk.progressBar? Теперь он показывает зеленый цвет, и я хотел бы, чтобы он был синим.

import ttk
self.progressBar = ttk.Progressbar(frame3, length=560, maximum=100, mode='determinate');
self.progressBar.place(x=-5, y=60)

person Coryza    schedule 22.11.2012    source источник
comment
это дубликат моего вопроса но, надеюсь, это привлечет больше внимания   -  person jbaldwin    schedule 22.11.2012
comment
но да, вы можете изменить цвет только в одной (альт) из тем Windows, в основном. но с помощью tcl вы можете изменить состояние, но я не уверен в этом...   -  person jbaldwin    schedule 22.11.2012


Ответы (4)


вы можете изменить цвет индикатора выполнения, но это сложно. Во-первых, вам нужно понять, что если вы используете тему по умолчанию, которая является темой по умолчанию, если вы не укажете тему в файле tk.style. Затем он передаст всю необходимую информацию операционной системе, которая выполнит рисунок, используя свой стиль, игнорируя информацию о стиле, которую вы ей передали. это означает, что он будет рисовать зеленую полосу прогресса в стиле окна в Windows и так далее и тому подобное. Что вам нужно сделать, так это изменить тему на пользовательскую, которую рисует ttk. Попробуйте стиль «моллюск», это один из самых красивых стилей, из которых ttk позволяет вам выбирать. вот рабочий адаптированный отрывок из сценария, который я написал:

import Tkinter as tk
import ttk as ttk
root = tk.Tk()
frame = tk.Frame(root)
frame.grid()
s = ttk.Style()
s.theme_use('clam')
s.configure("red.Horizontal.TProgressbar", foreground='red', background='red')
ttk.Progressbar(frame, style="red.Horizontal.TProgressbar", orient="horizontal", length=600, mode="determinate", maximum=4, value=1).grid(row=1, column=1)
frame.pack()

а вот картинка подтверждающая что работает

Цвет индикатора выполнения

person clan    schedule 29.06.2013
comment
Я отредактировал ваш ответ, включив в него само изображение (которое должно появиться в ближайшее время). В следующий раз используйте элемент управления изображением, чтобы напрямую добавить изображение, так как в будущем ссылка может не работать. Хорошая попытка, однако. - person MasterAM; 29.06.2013
comment
Этот способ не питонический. Подумайте о восстановлении старого стиля. Так сложно просто изменить цвет. Tkinter должен добавить API для изменения состояния индикатора выполнения (нормальное, пауза, ошибка), как в win32: docs.microsoft.com/zh-cn/windows/win32/controls/pbm-setstate - person Keelung; 31.10.2019
comment
Если я удалю theme_use, изменение цвета не сработает, и на самом деле этот процесс не дает никакого эффекта, потому что вывод, как на картинке, которую вы добавили, также создается только с использованием темы, которую вы упомянули. - person Daniyal Ahmad; 03.06.2021

Вам нужно использовать стиль, чтобы установить цвет индикатора выполнения. Элементы стиля индикатора выполнения:

troughcolor: фон всего виджета
background: фон индикатора выполнения
darkcolor: нижний и правый индикатор выполнения, самая внутренняя граница
lightcolor: верхний и левый индикатор выполнения, самая внутренняя граница
bordercolor: контур границы прогресса панель (за пределами вышеуказанной границы) и весь виджет

Если вы хотите, чтобы границы были того же цвета, что и индикатор выполнения, вы можете использовать этот код:

TROUGH_COLOR = 'blue'
BAR_COLOR = 'green'
style.configure("bar.Horizontal.TProgressbar", troughcolor=TROUGH_COLOR, bordercolor=TROUGH_COLOR, background=BAR_COLOR, lightcolor=BAR_COLOR, darkcolor=BAR_COLOR)

person m herbert    schedule 20.06.2019

Я обнаружил, что для меня это не сработает, я не хочу сказать, что это неправильно, однако я нашел использование [ troughcolor ] для изменения фона и [ background ] для индикаторной панели.

у меня не работает s.configure("red.Horizontal.TProgressbar", foreground='red', background='red')

мой рабочий способ s.configure("red.Horizontal.TProgressbar", troughcolor ='gray', background='red')

person Gilad Langer    schedule 13.05.2015
comment
Ваш ответ мне тоже помог. Спасибо за предоставление этого решения. - person DenGor; 01.04.2018

Progressbar похоже, принимает аргумент стиля. Согласно документации, для установки цветов переднего плана и фона можно использовать стиль. .

Примечание. Я сам не пробовал, просто указал вам на соответствующие документы.

person mbatchkarov    schedule 22.11.2012