我对在一个地方有效的东西感到沮丧,然后在几行之后就没有了。 我有一个用于输入值的输入框。必须输入它,以便它测试输入,如果没有,它会给出一条信息消息。单击“确定”后,焦点将返回到相同的输入框,直到插入值。这是代码片段:(eOdometer 是输入框)
def Calc_dist(event):
if event.widget == eOdometer:
if len(eOdometer.get()) == 0:
msgbox.showwarning(title="No input",message="You have not entered a value")
eOdometer.focus()
elif int(eOdometer.get()) < int(Odo2):
msgbox.showwarning(title="Wrong kilometers",message="The Kms are less than previous input")
eOdometer.delete(0,tk.END)
eOdometer.focus()
else:
Odo1=eOdometer.get()
等等。 看看 eOdometer.focus()
现在,稍后我会测试不同的输入框是否收到了值。如果不是,它会显示一个 askyesno 消息框。如果答复是肯定的,它应该将焦点返回到输入框以获取值,但它没有这样做。相反,它移动到下一个输入框。我不明白为什么 focus() 函数在一个地方有效,而在下一个地方无效。这是代码:(eFuelQ 是输入框)
EconVal = tk.StringVar()
def Calc_Econ(event):
if event.widget == eFuelQ:
global answer
if not len(eFuelQ.get())==0:
Odo1=eOdometer.get()
FuelQuant=eFuelQ.get()
print("Fuel quantity is :" + FuelQuant)
Distance=int(Odo1)-Odo2
print("Odo1="+str(Odo1))
print("Odo2="+str(Odo2))
EconVal.set(round(float(Distance)/float(FuelQuant),2))
print("Economy is",EconVal.get())
else:
answer= msgbox.askyesno(title="No Data",message="Did you put in fuel?")
if answer:
print("Yes I did")
eFuelQ.focus()
else:
print("No I didn't")
eFuelQ.insert(0,"0.00")
eFuelA.insert(0,"0.00")
看看 eFuelQ.focus()