我一直在开发一个带有标签的Tkinter应用程序。当变量等于某个东西时,该标签需要设置为某种颜色,而当它等于其他东西时,需要将其他东西设置为某种颜色。但是,我无法看到如何在应用程序的整个生命周期内执行此逻辑。
这是我到目前为止所做的:
if variableName.get() == "":
label4.config(bg = "SystemButtonFace")
else:
label4.config(bg = "lawngreen")
提前致谢!
答案 0 :(得分:1)
您可以使用tkinter变量的trace
方法设置在变量更改时运行的函数。
def update_bg(*args):
if variableName.get() == "":
label4.config(bg = "SystemButtonFace")
else:
label4.config(bg = "lawngreen")
variableName.trace('w', update_bg)
我不知道您的应用程序,但这似乎是制作您自己的Label小部件的理想位置。这是一个例子:
import tkinter as tk
class DuffettLabel(tk.Label):
'''A special type of label that changes the background color when empty'''
def __init__(self, master=None, **kwargs):
tk.Label.__init__(self, master, **kwargs)
self.variable = kwargs.get('textvariable')
if self.variable is not None:
self.variable.trace('w', self.update_bg)
self.update_bg()
def update_bg(self, *args):
if self.variable.get() == "":
self.config(bg = "red")
else:
self.config(bg = "lawngreen")
root = tk.Tk()
root.geometry('200x200')
variableName = tk.StringVar()
ent = tk.Entry(root, textvariable=variableName)
ent.pack()
lbl = DuffettLabel(root, textvariable=variableName)
lbl.pack(fill=tk.X)
root.mainloop()
答案 1 :(得分:0)
我为我的一个小python 3.6.4应用程序构建了这个小函数。希望它有所帮助。
def range_coin(self,no,pos,coin,vol):
if eval(str(no)) < 0:
temp = 'self.' + str(coin)+'l'+str(pos)+'0'+str(vol)+'_la' + '.configure(background = "red")'
exec(temp)
else:
temp = 'self.' + str(coin)+'l'+str(pos)+'0'+str(vol)+'_la' + '.configure(background = "green")'
exec(temp)
temp = "self." + str(coin)+"l"+str(pos)+"0"+str(vol)+"_la['text'] =" + str(no)
exec(temp)