gpt4 book ai didi

python - 如果 DoubleVar 或 IntVar 为空,tkinter python 3.4 设置为零

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:57 24 4
gpt4 key购买 nike

如果此输入框为空,我尝试将文本框或 EntryBox 设置为 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()

关于python - 如果 DoubleVar 或 IntVar 为空,tkinter python 3.4 设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com