tkinter:不同颜色的进度条
tkinter : progressbar with different colors
我在这个程序中使用了一个与比例相关的进度条。我想要的是从 0 到 25 进度条是绿色的,从 25 到 50 黄色,从 50 到 75 橙色和从 75 到 100 红色,但我寻找不同的部分有自己的颜色,并不是所有的进度条变化它的颜色,就像在这个程序中一样(所以最后,如果比例是 65,例如,进度条将有一个绿色部分,一个黄色部分和一个橙色部分)。
我完全不知道该怎么做,也一无所获。
如果你能帮助我,谢谢!!!!!!
这是我的程序:
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()
也许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()
我在这个程序中使用了一个与比例相关的进度条。我想要的是从 0 到 25 进度条是绿色的,从 25 到 50 黄色,从 50 到 75 橙色和从 75 到 100 红色,但我寻找不同的部分有自己的颜色,并不是所有的进度条变化它的颜色,就像在这个程序中一样(所以最后,如果比例是 65,例如,进度条将有一个绿色部分,一个黄色部分和一个橙色部分)。 我完全不知道该怎么做,也一无所获。
如果你能帮助我,谢谢!!!!!!
这是我的程序:
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()
也许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()