【发布时间】:2020-12-24 18:10:27
【问题描述】:
我正在定义一个StringVar() 并给它一个值,然后将它用作Entry 小部件的textvariable。我还向StringVar 添加了一条跟踪信息,以便我可以将其用作占位符检查器,并使占位符与键入的文本具有不同的颜色。
但是,当我运行代码时,条目小部件不包含任何文本,但如果我打印 StringVar() 的值,它会给出正确的值。此外,从不调用跟踪命令,当我打印Entry 小部件的textvariable 的值时,它会显示为PY_VAR#。
有谁知道为什么这不起作用以及如何解决它?
circleVarEmailAddress = StringVar()
circleVarEmailAddress.set("email address")
circletextEmailAddress = Entry(forgottenWindow, textvariable = circleVarEmailAddress,
font = 10, relief = "raised", highlightbackground = "black",
borderwidth = 2, fg = "#808080")
circletextEmailAddress.place(x = 75, y = 100, width = 250, height = 50)
def placeholderEmailAddress(a, b, c):
print("Hey")
for i in range(1, 13):
if("email address"[:i] in circleVarEmailAddress.get() == True and
"email address"[i:] in circleVarEmailAddress.get() == True):
index1 = circleVarEmailAddress.get().index("email address"[:i])
index2 = circleVarEmailAddress.get().index("email address"[i:])
circleVarEmailAddress.set(circleVarEmailAddress.get()[:index1] +
circleVarEmailAddress.get()[index1 + i:index2] +
circleVarEmailAddress.get()[index2 + 13 - i:])
if(circleVarEmailAddress.get() != "email address" and
"email address" in circleVarEmailAddress.get() == True):
circleVarEmailAddress.set(circleVarEmailAddress.get().replace("email address", ""))
if circleVarEmailAddress.get() == "":
circleVarEmailAddress.set("email address")
if circleVarEmailAddress.get() == "email address":
circletextEmailAddress.config(fg = "#808080")
else:
circletextEmailAddress.config(fg = "#000000")
circleVarEmailAddress.trace_add("write", placeholderEmailAddress)
【问题讨论】:
-
什么是
forgottenWindow?请提供minimal reproducible example。
标签: python tkinter trace tkinter-entry