如何在python中更改ttk.progressBar颜色

时间:2012-11-22 10:39:41

标签: python colors progress-bar ttk

有谁知道如何更改ttk.progressBar的颜色?它现在显示绿色,我很想将它变成蓝色。

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

4 个答案:

答案 0 :(得分:8)

您可以更改进度条的颜色,但这很棘手。首先,您需要了解如果您使用默认主题,如果您未在tk.style中指定主题,则默认主题是默认主题。然后它会将所需的所有信息传递给操作系统,操作系统将使用其样式进行绘制,忽略您传递的样式信息。这意味着它将在Windows上绘制一个Window的样式绿色进度条,依此类推。您需要做的是将主题更改为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()

这是确认其正常工作的图片

Progress bar color

答案 1 :(得分:1)

我发现对我来说它不起作用, 但我并不想说这是错的 我已经找到 使用[troughcolor]更改背景和指示栏的[背景]

不适合我 s.configure("red.Horizontal.TProgressbar", foreground='red', background='red')

我的工作方式 s.configure("red.Horizontal.TProgressbar", troughcolor ='gray', background='red')

答案 2 :(得分:0)

Progressbar appears to take一个样式参数。根据{{​​3}},样式可用于设置前景色和背景色。

注意:我自己没有尝试过,只是指向相关的文档

答案 3 :(得分:0)

您需要使用一种样式来设置进度条的颜色。进度栏样式元素为:

troughcolor:完整小部件的背景
背景:进度条的背景
深色:底部和右侧进度条最里面的边框
浅色:顶部和左侧条进度条最里面的边框
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)