tkinter python 3.4 如果 DoubleVar 或 IntVar 为空则设置为零
tkinter python 3.4 set zero if DoubleVar or IntVar is empty
如果此输入框为空,我正在尝试将文本框或输入框设置为 0
如果输入框的文本变量是字符串,我可以做到,但如果是 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:
无论如何,我修复了你的代码,所以如果我理解正确的话,它可以正常工作。主要部分是将您的 if
语句更改为 try
和 except
语句。原因是 DoubleVar
如果不能得到 double 值将通过 ValueError
异常。例如,当 Entry 为空或为字符串时。另外,您的 mButtonLoad
始终是 None,所以我也修复了它。最后,你不需要检查字符串的长度来知道它是否为空。用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()
如果此输入框为空,我正在尝试将文本框或输入框设置为 0 如果输入框的文本变量是字符串,我可以做到,但如果是 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:
无论如何,我修复了你的代码,所以如果我理解正确的话,它可以正常工作。主要部分是将您的 if
语句更改为 try
和 except
语句。原因是 DoubleVar
如果不能得到 double 值将通过 ValueError
异常。例如,当 Entry 为空或为字符串时。另外,您的 mButtonLoad
始终是 None,所以我也修复了它。最后,你不需要检查字符串的长度来知道它是否为空。用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()