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

如何在Tkinter中获取用户输入并传递给函数得到输出结果

Tkinter 输入值传参调用自定义函数解决方案

问题原因

你当前代码的问题有两个:

  • Button的command参数直接绑定getvals函数时,Tkinter不会自动向函数传递输入框的内容参数,会触发参数数量不匹配的报错
  • 你定义的getvals函数没有处理输入值获取的逻辑,关联到Entry的StringVar需要调用.get()方法才能拿到用户输入的字符串内容

修改方案

方法1:用lambda匿名函数包装传参(符合你要把输入值作为参数传入函数的需求)

完整可运行代码如下:

import tkinter as tk
from tkinter import *

root = tk.Tk()
root.geometry("644x344")

def getvals(email, date_to, date_from):
    """
    你的自定义业务处理逻辑写在这里
    """
    # 测试打印语句,可替换为你自己的处理逻辑
    print(f"获取到的邮箱:{email}")
    print(f"开始时间:{date_to}")
    print(f"结束时间:{date_from}")

Label(root,text="Automatic Email Saver",font="comicansms 13 bold",pady=15).grid(row=0,column=3)
Email = Label(root, text="Email")
date_start = Label(root, text="Starting Date And Time")
date_end = Label(root, text="Ending Date and Time")

Email.grid(row=1, column=2)
date_start.grid(row=2, column=2)
date_end.grid(row=3, column=2)

Emailvalue = StringVar()
date_startvalue = StringVar()
date_endvalue = StringVar()

Emailentry = Entry(root, textvariable=Emailvalue)
date_toentry = Entry(root, textvariable=date_startvalue)
date_endentry = Entry(root, textvariable=date_endvalue)

Emailentry.grid(row=1, column=3)
date_toentry.grid(row=2, column=3)
date_endentry.grid(row=3, column=3)

# 核心修改:用lambda主动传递三个输入值作为参数
Button(text="Submit", command=lambda: getvals(Emailvalue.get(), date_startvalue.get(), date_endvalue.get())).grid(row=5, column=3)

root.mainloop()

方法2:直接在函数内获取全局的StringVar值(不需要传参)

如果不需要强制把值作为参数传入,也可以直接在函数内部调用三个StringVar的.get()方法获取输入,仅需要修改getvals定义和Button绑定逻辑:

def getvals():
    email = Emailvalue.get()
    date_to = date_startvalue.get()
    date_from = date_endvalue.get()
    # 后续处理逻辑
    print(f"获取到的邮箱:{email}")

# Button绑定不需要lambda,直接写函数名即可
Button(text="Submit", command=getvals).grid(row=5, column=3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:45:10