from tkinter import messagebox
def validate_age(age):
try:
age = int(age)
if age < 0 or not isinstance(age, int):
messagebox.showerror("输入错误", "请输入有效的年龄(正整数)。")
return False
else:
return True
except ValueError:
messagebox.showerror("输入错误", "请输入有效的年龄(正整数)。")
return False
def validate_measurements(height, weight):
if not isinstance(height, (int, float)) or height <= 0:
return False
if not isinstance(weight, (int, float)) or weight <= 0:
return False
return True
def check_parameters(age,height,weight):
try:
if not validate_age(age):
messagebox.showerror("输入错误", "请输入正整数作为年龄。")
return False
if not validate_measurements(height,weight):
messagebox.showerror("输入错误", "请输入正数作为所有的测量值。")
return False
return True
except ValueError as e: # 捕获异常并显示错误消息弹窗
messagebox.showerror("输入错误", str(e)) # 显示相应的错误消息弹窗
print(e)
return False # 返回 False 表示参数验证未通过,阻止程序的继续执行
def main():
name=input('姓名')
age = int(input('年龄') )
height = float(input('身高'))
weight = float(input('体重'))
try:
if not check_parameters(age,height,weight):
print("参数校验未通过,终止计算!")
return None
print("参数校验通过!")
except ValueError as e:
print("参数校验未通过:", e)
return None
print(age)
print(height)
print(weight)
main()
为什么age,height及weight输入字符时无弹窗提示错误
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 【以下回答由 GPT 生成】
问题的根本是因为使用了
messagebox.showerror
的函数,但是没有使用图形界面库来创建一个GUI窗口,导致无法弹出错误消息框。为了解决这个问题,你可以使用tkinter
图形界面库来创建一个GUI窗口,并在窗口中显示错误消息。以下是对你的代码进行优化的解决方案:首先,确保你的系统安装了
tkinter
库。如果没有安装,可以使用以下命令进行安装:pip install tkinter
然后,对你的代码进行修改:
import tkinter as tk from tkinter import messagebox # 创建一个主窗口 root = tk.Tk() root.withdraw() # 隐藏主窗口 def validate_age(age): try: age = int(age) if age < 0 or not isinstance(age, int): messagebox.showerror("输入错误", "请输入有效的年龄(正整数)。") return False else: return True except ValueError: messagebox.showerror("输入错误", "请输入有效的年龄(正整数)。") return False def validate_measurements(height, weight): if not isinstance(height, (int, float)) or height <= 0: return False if not isinstance(weight, (int, float)) or weight <= 0: return False return True def check_parameters(age, height, weight): try: if not validate_age(age): messagebox.showerror("输入错误", "请输入正整数作为年龄。") return False if not validate_measurements(height, weight): messagebox.showerror("输入错误", "请输入正数作为所有的测量值。") return False return True except ValueError as e: messagebox.showerror("输入错误", str(e)) print(e)
在上面的代码中,我们首先创建了一个主窗口
root
并使用root.withdraw()
函数隐藏它,这样在创建弹窗时不会出现两个窗口。然后,我们导入tkinter
的messagebox
并使用messagebox.showerror
函数来创建错误提示框,并在其中显示错误消息。这样,当输入的年龄、身高或体重参数无效时,会弹出一个错误提示框来及时提醒用户。同时,我们也在控制台输出了错误消息,方便进行调试。
希望以上解决方案能够帮到你,如果你需要进一步的帮助,请随时提问。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥15 clion的参数提示怎么关闭
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀
- ¥15 mifare plus卡认证