我有一个进度条,根据我将比例移动到的值更改其值。现在我想让进度条实时更改颜色,具体取决于缩放比例的值。这是我创建的方法:
def volumelevel():
s = ttk.Style()
s.theme_use("classic")
if scalevar.get() <= 25:
s.configure("green.Horizontal.TProgressbar", background='green')
scale.configure(variable=scalevar, command=lambda x: progress.configure(value=scalevar.get()))
progress.configure(style="green.Horizontal.TProgressbar")
elif scalevar.get() <= 75:
s.configure("yellow.Horizontal.TProgressbar", background='yellow')
scale.configure(variable=scalevar, command=lambda x: progress.configure(value=scalevar.get()))
progress.configure(style="yellow.Horizontal.TProgressbar")
elif scalevar.get() <= 90:
s.configure("orange.Horizontal.TProgressbar", background='orange')
scale.configure(variable=scalevar, command=lambda x: progress.configure(value=scalevar.get()))
progress.configure(style="orange.Horizontal.TProgressbar")
elif scalevar.get() <= 100:
s.configure("red.Horizontal.TProgressbar", background='red')
scale.configure(variable=scalevar, command=lambda x: progress.configure(value=scalevar.get()))
progress.configure(style="red.Horizontal.TProgressbar")
我知道这个方法确实有效,因为我在一个按钮内调用它来测试它,当我调整比例然后单击按钮时,进度条颜色会发生变化。
我在缩放对象中调用此方法,但是当我移动缩放滑块时,无论缩放设置的值如何,进度条都保持绿色(如方法中所指定)。如何使用比例实时更改进度条颜色?
UPDATE:我创建了一个tkinter条目,用比例实时显示值,然后根据值改变条目的前景,并且由于某种原因它可以工作,但是但是进度条没有。
答案 0 :(得分:4)
好的,我开始玩这个方法,我认为问题在于它内部有很多冗余(我还在学习),这引起了一些冲突。我赌博并开始一次删除一小段代码,看看该方法的表现如何,并发现主要问题在于我的比例配置。删除不需要的代码后,该方法如下所示:
def volumelevel():
if scalevar.get() <= 25:
s.configure("Horizontal.TProgressbar", background='green')
progress.configure(style="Horizontal.TProgressbar", value=scalevar.get())
elif scalevar.get() <= 75:
s.configure("Horizontal.TProgressbar", background='yellow')
progress.configure(style="Horizontal.TProgressbar", value=scalevar.get())
elif scalevar.get() <= 90:
s.configure("Horizontal.TProgressbar", background='orange')
progress.configure(style="Horizontal.TProgressbar", value=scalevar.get())
elif scalevar.get() <= 100:
s.configure("Horizontal.TProgressbar", background='red')
progress.configure(style="Horizontal.TProgressbar", value=scalevar.get())
我有Style()
声明,以及我的代码的根部分中的主题(来自我之前发现的示例)所以我把它拿出来了。
我从我的样式名称中取出了颜色名称,因为这对方法没有影响。
我完全取出了比例配置,因为在比例对象本身中调用了属性,因此我使用了scale对象中的命令来调用我创建的方法,而不是设置进度条的值。
现在,进度条会根据比例值实时更改颜色。