簡體   English   中英

根據另一個變量的大小在tkinter中顯示有色變量

[英]Displaying colored variables in tkinter based on size of another variable

我正在使用Tkinter根據剩余庫存量以不同的顏色顯示漫畫書。 函數的顏色部分正常工作,並且對象/類工作正常,但僅顯示列表中最后一個對象的文本,如圖像和外殼所示。

功能。

stock = StringVar()
def update_label():
    counter = 1
    for c in comics:
        stock.set("")
        counter += 1
        if c._stock >= 10:
            colour = "green"
        elif c._stock <= 3:
            colour = "red"
        elif c._stock <= 6:
            colour = "orange"
        stock.set(c._name + " - " + str(c._stock)+ " remaining")
        print (colour)
        print (stock.get())
        Label(stock_frame, textvariable=stock, fg = colour, bg ="#333333").grid(row=counter, column = 0, pady=(0,10))

外殼輸出。

orange
A Great Comic - 7 remaining
red
Jerry Java - 1 remaining
green
Tony Tkinter - 11 remaining
orange
Scratch The Cat - 5 remaining
red
Python Panic - 3 remaining
>>> 

顏色的圖像起作用,但文本不起作用因此,文本和顏色在外殼中起作用,但是只有顏色在GUI中起作用。 我假設問題出在標簽和文本變量上,但是我無法弄清楚為什么它只重復列表中的最后一個對象。

提前致謝

我相信您的問題是,您正在為每個 Label重復使用相同的 StringVar 您應該為每個 Label分配一個StringVar 您沒有為我提供足夠的代碼來對其進行測試,但是我相信它會像這樣:

stocks = [StringVar() for comic in comics]

def update_label():

    for counter, comic in enumerate(comics):
        stock = stocks[counter]
        stock.set("")

        if comic._stock >= 10:
            colour = "green"
        elif comic._stock <= 3:
            colour = "red"
        elif comic._stock <= 6:
            colour = "orange"

        stock.set(comic._name + " - " + str(comic._stock) + " remaining")
        print(colour)
        print(stock.get())
        Label(stock_frame, textvariable=stock, fg=colour, bg="#333333").grid(row=counter + 2, column=0, pady=(0, 10))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM