You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter绑定<Return>回车触发getvals提交打印值报错解决

报错原因

Tkinter 中通过bind()绑定的事件触发回调时,会自动向回调函数传入1个event事件对象参数;但你定义的getvals()函数没有设置接收参数的位置,因此触发参数不匹配报错。
而按钮通过command参数绑定回调时,默认不会传入event对象,所以点击按钮调用原函数不会出错。

修复方案

二选一即可:

  • 方案1(推荐):修改getvals函数定义,添加一个默认值为None的可选形参接收event对象,同时兼容按钮点击、回车触发两种调用场景
  • 方案2:绑定回车事件时用lambda表达式拦截event参数,不修改原函数定义
代码修改示例

方案1修改片段

修改函数定义:

# 新增event可选形参
def getvals(event=None):
    print("Submitting form")
    print(f"{namevalue.get(), phonevalue.get(), gendervalue.get(), emergencyvalue.get(), paymentmodevalue.get(), foodservicevalue.get()} ")

放开回车绑定的注释即可正常运行:

root.bind('<Return>', getvals)

方案2修改片段

不需要改动原getvals函数,将绑定代码替换为如下写法:

root.bind('<Return>', lambda event: getvals())
完整修正后代码
from tkinter import *

root = Tk()

def getvals(event=None):
    print("Submitting form")
    print(f"{namevalue.get(), phonevalue.get(), gendervalue.get(), emergencyvalue.get(), paymentmodevalue.get(), foodservicevalue.get()} ")


root.geometry("644x344")
#Heading
Label(root, text="Welcome to Harry Travels", font="comicsansms 13 bold", pady=15).grid(row=0, column=3)

#Text for our form
name = Label(root, text="Name")
phone = Label(root, text="Phone")
gender = Label(root, text="Gender")
emergency = Label(root, text="Emergency Contact")
paymentmode = Label(root, text="Payment Mode")

#Pack text for our form
name.grid(row=1, column=2)
phone.grid(row=2, column=2)
gender.grid(row=3, column=2)
emergency.grid(row=4, column=2)
paymentmode.grid(row=5, column=2)

# Tkinter variable for storing entries
namevalue = StringVar()
phonevalue = StringVar()
gendervalue = StringVar()
emergencyvalue = StringVar()
paymentmodevalue = StringVar()
foodservicevalue = IntVar()


#Entries for our form
nameentry = Entry(root, textvariable=namevalue)
phoneentry = Entry(root, textvariable=phonevalue)
genderentry = Entry(root, textvariable=gendervalue)
emergencyentry = Entry(root, textvariable=emergencyvalue)
paymentmodeentry = Entry(root, textvariable=paymentmodevalue)

# Packing the Entries
nameentry.grid(row=1, column=3)
phoneentry.grid(row=2, column=3)
genderentry.grid(row=3, column=3)
emergencyentry.grid(row=4, column=3)
paymentmodeentry.grid(row=5, column=3)

#Checkbox & Packing it
foodservice = Checkbutton(text="Want to prebook your meals?", variable = foodservicevalue)
foodservice.grid(row=6, column=3)

#Button & packing it and assigning it a command
Button(text="Submit to Harry Travels", command=getvals ).grid(row=7, column=3)

# 绑定回车提交
root.bind('<Return>', getvals)

root.mainloop()

内容的提问来源于stack exchange,提问作者Raheel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:45:37