Может быть 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()