焦点似乎无法始终如一地工作

时间:2021-01-06 10:36:17

标签: python tkinter-entry

我对在一个地方有效的东西感到沮丧,然后在几行之后就没有了。 我有一个用于输入值的输入框。必须输入它,以便它测试输入,如果没有,它会给出一条信息消息。单击“确定”后,焦点将返回到相同的输入框,直到插入值。这是代码片段:(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()

0 个答案:

没有答案