gpt4 book ai didi

python - 如何使用 tkinter 小部件嵌入 if 和 elif

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:29 26 4
gpt4 key购买 nike

我想尝试在 tkinter 标签小部件中使用 if/elif/else 条件来检查三个条件之一,并根据这些结果更改前景色...

条件 1 equalTemp 等于或大于 hightempset [标签小部件的前景色 = 'red']

条件 2 EquipmentTemp 等于或小于 lowtempset [标签小部件的前景色 = 'blue']

条件 3EquipTemp 小于 hightempset 且大于 lowtempset {或者,换句话说,conditi不满足 #1 和 #2} [标签小部件的前景色 = '白色']

我尝试执行此操作的一行代码是:

Label4=Label(root, textvariable=equipTemp2, foreground='red' if equipTemp2 => hightempset  elif equipTemp2 =< lowtempset 'blue' else 'white', width=6, justify=LEFT)

最佳答案

您可以使用双重 if-else 语句,例如:

foreground='red' if equipTemp2.get() >= hightempset else 'blue' if equipTemp2.get() <= lowtempset else 'white'

由于您正在使用equipTemp2作为文本变量,我假设它是 tkinter IntVarDoubleVar所以你必须使用.get()方法。如果是StringVar你必须使用int(equipTemp2.get())float(equipTemp2.get()) .

但是,我确实认为像这样进行赋值确实会损害可读性,并且请注意,该表达式仅在标签启动时计算,因此如果 equipTemp2改变,颜色不会改变。

<小时/>

如果您确实想在每次变量更改时更改标签的颜色,您可以trace变量并在变量更改时应用前景色,如下所示:

from Tkinter import *

def callback(*args):
try:
Label4.config(foreground='red' if equipTemp2.get() >= hightempset else 'blue' if equipTemp2.get() <= lowtempset else 'white')
except ValueError:
pass

root = Tk()

equipTemp2 = IntVar()
hightempset = 50
lowtempset = 10

Label4=Label(root, textvariable=equipTemp2, width=6, justify=LEFT)
Label4.pack()
equipTemp2.trace("w", callback)
equipTemp2.set(15)

sb = Spinbox(root, textvariable=equipTemp2, from_=0, to=100)
sb.pack()

root.mainloop()

请注意,try-except block 只是因为当您在旋转框中键入内容时,变量变为 ''一会儿,这是IntVar无法处理(它将给出 ValueError )。

关于python - 如何使用 tkinter 小部件嵌入 if 和 elif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com