tkinter:具有不同颜色的进度条

tkinter:具有不同颜色的进度条,tkinter,colors,progress-bar,sections,Tkinter,Colors,Progress Bar,Sections,我在这个程序中使用了一个进度条来连接刻度。我想要的是,从0到25,progressbar是绿色的,从25到50黄色的,从50到75橙色的,从75到100红色的,但是我寻找的不同部分有自己的颜色,并不是所有的progressbar都会改变它的颜色,就像在这个程序中一样(因此,在最后,例如,如果刻度为65,progressbar将有一个绿色部分、一个黄色部分和一个橙色部分)。 我完全不知道该怎么做,什么也没发现 如果你能帮助我,谢谢你 这是我的程序: from tkinter import * fr

我在这个程序中使用了一个进度条来连接刻度。我想要的是,从0到25,progressbar是绿色的,从25到50黄色的,从50到75橙色的,从75到100红色的,但是我寻找的不同部分有自己的颜色,并不是所有的progressbar都会改变它的颜色,就像在这个程序中一样(因此,在最后,例如,如果刻度为65,progressbar将有一个绿色部分、一个黄色部分和一个橙色部分)。 我完全不知道该怎么做,什么也没发现

如果你能帮助我,谢谢你

这是我的程序:

from tkinter import *
from tkinter import ttk

def volumelevel(scalevar):
    scalevar=int(scalevar)
    if scalevar <= 25:
        s.configure("Horizontal.TProgressbar",background="green")
        progress.configure(style="Horizontal.TProgressbar",value=scalevar)
    elif scalevar <= 50:
        s.configure("Horizontal.TProgressbar",background="yellow")
        progress.configure(style="Horizontal.TProgressbar",value=scalevar)
    elif scalevar <= 75:
        s.configure("Horizontal.TProgressbar",background="orange")
        progress.configure(style="Horizontal.TProgressbar",value=scalevar)
    elif scalevar <= 100:
        s.configure("Horizontal.TProgressbar",background="red")
        progress.configure(style="Horizontal.TProgressbar",value=scalevar)

root=Tk()

s=ttk.Style(root)
s.theme_use("clam")

progress=ttk.Progressbar(root,maximum="100",style="Horizontal.TProgressbar")
progress.pack()

scalevar=IntVar()
scale=Scale(root,from_=0,to=100,orient="horizontal",variable=scalevar,command=volumelevel)
scale.pack()

root.mainloop()
从tkinter导入*
从tkinter导入ttk
def容积级别(scalevar):
scalevar=int(scalevar)

如果scalevar可能
progressbar
无法做到这一点,但是
tkinter.canvas
可以轻松做到这一点

这是图像:

这是你想要的吗

from tkinter import *
from tkinter import ttk

def volumelevel(scalevar):
    scalevar=int(scalevar)
    canvas.delete(ALL)
    if scalevar <= 25:
        canvas.create_rectangle(0,5,scalevar,15,fill="green")
    elif scalevar <= 50 and scalevar > 25:
        canvas.create_rectangle(0, 5, 25, 15, fill="green")
        canvas.create_rectangle(25, 5, scalevar,15 ,fill="yellow")
    elif scalevar <= 75 and scalevar > 50:
        canvas.create_rectangle(0, 5, 25, 15, fill="green")
        canvas.create_rectangle(25, 5, 50, 15, fill="yellow")
        canvas.create_rectangle(50, 5, scalevar, 15, fill="orange")
    else:
        canvas.create_rectangle(0, 5, 25, 15, fill="green")
        canvas.create_rectangle(25, 5, 50, 15, fill="yellow")
        canvas.create_rectangle(50, 5, 75, 15, fill="orange")
        canvas.create_rectangle(75, 5, scalevar, 15, fill="red")

root=Tk()

s=ttk.Style(root)
s.theme_use("clam")

canvas = Canvas(root,bd=1,relief="solid",width=98,height=15) # I find when width=98 can make canvas filled when scale = 100;
canvas.pack()

scalevar=IntVar()
scale=Scale(root,from_=0,to=100,orient="horizontal",variable=scalevar,command=volumelevel)
scale.pack()

root.mainloop()
从tkinter导入*
从tkinter导入ttk
def容积级别(scalevar):
scalevar=int(scalevar)
canvas.delete(全部)

如果scalevar是这样的话!!谢谢!!