如果此输入框为空,我试图将文本框或EntryBox设置为0 如果entrybox的textvariable是一个String,我可以这样做,但我不能,如果是DoubleVar或IntVar
这是我的代码
mGui = Tk()
mGui.title("GUI")
mGui.geometry('1250x650+10+10')
def mCheck():
if len(name1.get()) == 0:
name1.set('noidea')
mGui.update()
if (len(name2.get()) == 0):
name2.set('nofkidea')
mGui.update()
if (value1.get()== Empty or (len(str(value2.get()))=0) or (len(str(float(value2.get()))) == 0)):
name2.set(10)
mGui.update()
if (value2.get()== None or (len(str(value2.get()))=0) or (len(str(float(value2.get()))) == 0)):
name2.set(99999)
mGui.update()
value1 = DoubleVar()
value2 = DoubleVar()
name1 = StringVar()
name2 = StringVar()
mButtonLoad = Button(mGui, text = "check", command = mCheck, fg = 'Red').place(x=550,y=140)
tText1 = Entry(mGui, textvariable = name1).place(x=10,y=80)
tText2 = Entry(mGui, textvariable = name2).place(x=10,y=100)
vText1 = Entry(mGui, textvariable = value1).place(x=200,y=80)
vText2 = Entry(mGui, textvariable = value2).place(x=200,y=100)
mGui.after(1, mGui.update)
mGui.mainloop()
当我尝试将DoubleVar文本框设置为0(如果这些文本框为空)时,我收到此错误
ValueError: could not convert string to float:
答案 0 :(得分:1)
无论如何,我修复了你的代码,所以如果我理解你的话它会正常工作。主要部分是将您的if
语句更改为try
和except
语句。原因是如果DoubleVar
无法获得双精度值,ValueError
会通过mButtonLoad
异常。例如,当Entry为空或是字符串时。你的not
也总是无,所以我也解决了这个问题。最后,你不需要检查一个字符串的长度来知道它是否为空。足以使用from tkinter import *
mGui = Tk()
mGui.title("GUI")
mGui.geometry('1250x650+10+10')
def mCheck():
if not name1.get():
name1.set('noidea')
mGui.update()
if not name2.get():
name2.set('nofkidea')
mGui.update()
try:
print(value1.get())
except ValueError as ve:
name1.set(10)
mGui.update()
print(ve)
try:
print(value2.get())
except ValueError as ve:
name2.set(9999)
mGui.update()
print(ve)
value1 = DoubleVar()
value2 = DoubleVar()
name1 = StringVar()
name2 = StringVar()
mButtonLoad = Button(mGui, text = "check", command = mCheck, fg = 'Red')
mButtonLoad.place(x=550,y=140)
tText1 = Entry(mGui, textvariable = name1).place(x=10,y=80)
tText2 = Entry(mGui, textvariable = name2).place(x=10,y=100)
vText1 = Entry(mGui, textvariable = value1).place(x=200,y=80)
vText2 = Entry(mGui, textvariable = value2).place(x=200,y=100)
mGui.after(1, mGui.update)
mGui.mainloop()
来检查它。
{{1}}