Python Tkinter Entry输入框点击提交无返回结果问题求助
问题排查
- 问题1:
eq变量的取值时机错误
你当前是在窗口刚初始化、用户还没进行任何输入的时候就执行了eq = textbox1.get() + textbox2.get() + textbox3.get(),此时三个输入框都是空值,且这个eq不会随着用户后续输入自动更新,点击按钮时调用的还是初始化时的静态空值。 - 问题2:输入框
get()返回的是字符串类型,直接相加是字符串拼接而非数值求和 - 问题3:提交按钮对应的
submit函数没有实时读取输入框的最新值,直接用了初始化阶段的静态eq变量
修复后完整代码
from tkinter import * import os os.system("clear") root = Tk() root.title('Test') root.geometry('1000x600') def submit(): # 点击按钮时实时读取三个输入框的最新值,转为int类型后求和 try: num1 = int(textbox1.get()) num2 = int(textbox2.get()) num3 = int(textbox3.get()) total = num1 + num2 + num3 submit_text = Label(root, text=f"求和结果:{total}") submit_text.pack() except ValueError: # 异常处理,避免用户输入非数字时报错崩溃 err_text = Label(root, text="请输入合法的数字!", fg="red") err_text.pack() # 调整标签和输入框顺序,符合用户输入直觉 label1 = Label(root, text='输入第一个数字') label1.pack() textbox1 = Entry(root, width=30) textbox1.pack() label2 = Label(root, text='输入第二个数字') label2.pack() textbox2 = Entry(root, width=30) textbox2.pack() label3 = Label(root, text='输入第三个数字') label3.pack() textbox3 = Entry(root, width=30) textbox3.pack() button = Button(root, text="submit", command=submit) button.pack() root.mainloop()
核心修改说明
- 把取值和求和逻辑移到
submit函数内部,确保每次点击按钮都读取用户最新的输入内容 - 对
get()返回的字符串做int类型转换,实现数值求和 - 新增异常捕获逻辑,当用户输入非数字内容时给出友好提示
- 调整输入框和对应标签的顺序,操作逻辑更符合用户使用习惯
内容的提问来源于stack exchange,提问作者zketra
相关产品推荐
相关产品推荐

