2017-05-25 23 views
2

我有一個進度條,根據我移動的比例值來更改其值。現在我想根據標尺移到什麼值實時改變進度條的顏色。下面是我創建了這樣做的方法:使用縮放比例在Python中更新進度條的顏色?

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") 

我知道這個方法做工作,因爲我把它叫做一個按鈕內部進行測試,當我調整比例,然後按一下按鈕,進度條顏色變化。

我在我的縮放對象中調用此方法,但是當我移動縮放滑塊時,無論Scale設置爲何值,進度條都保持綠色(如方法中指定的那樣)。如何使用進度條顏色實時更改比例?

更新:我做了一個Tkinter的條目與天平實時顯示的值,遂作出上述方法改變取決於值項的前景和它的作品出於某種原因,但尚未有進展吧,它沒有。

回答

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()聲明,並在我的代碼的根部分的主題(從前面的例子中,我發現),所以我花了這一點。

我從我的風格名稱中提取顏色名稱,因爲這對方法沒有影響。

我把規模配置了完全的屬性都被稱爲在規模對象本身,所以我用我的命令對象規模裏面調用我創造的,而不是進度條的設定值的方法。

而現在的進度條實時改變顏色的基礎上的價值尺度。