根据另一个变量的大小在tkinter中显示有色变量

时间:2018-08-17 05:10:17

标签: python python-3.x tkinter

我正在使用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))

Shell输出。

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

Image of colours working but not text 因此,文本和颜色在外壳程序中有效,但只有颜色在GUI中有效。我假设问题出在标签和文本变量上,但是我无法弄清楚为什么它只重复列表中的最后一个对象。

预先感谢

1 个答案:

答案 0 :(得分:0)

我相信您的问题是您为每个 units = int(input("Enter the units")) if(1<=units and 150>=units): firstSum = units * 2.50 print("First sum:-", firstSum) if(151<=units and 300>=units): firstSum = 150 * 2.50 subUnits = units - 150 secondSum = firstSum + (subUnits * 3.60) print(secondSum) if(301<=units and 450>=units): firstSum = 150 * 2.50 subUnits1 = units - 150 firstSum += 150 * 3.60 subUnits = subUnits1 - 150 secondSum = firstSum + subUnits * 4.75 print(secondSum) if(451<=units and 600>= units): firstSum = 150 * 2.50 subUnits1 = units - 150 firstSum += 150 * 3.60 subUnits1 -= 150 firstSum += subUnits1 * 4.75 subUnits = subUnits1 - 150 secondSum = firstSum + subUnits * 5 print(secondSum) if(601<=units): firstSum = 150 * 2.50 subUnits1 = units - 150 firstSum += 150 * 3.60 subUnits1 -= 150 firstSum += subUnits1 * 4.75 subUnits2 = subUnits1 - 150 firstSum += 150 * 5 subUnits = subUnits2 - 150 secondSum = firstSum + subUnits * 6 print(secondSum) 重新使用相同 StringVar。您应该为每个 Label分配一个StringVar。您没有为我提供足够的代码来进行测试,但是我相信它会像这样:

Label