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

如何在Tkinter界面主循环外访问Entry组件的用户输入变量

Tkinter Entry控件输入值获取问题解决方案

问题根源

  • root.mainloop() 是Tkinter的阻塞式事件循环,只有窗口关闭后,循环之后的代码才会执行。你仅在回调函数中声明了Entry控件为全局变量,没有存储控件的输入值,自然无法在主循环外拿到用户输入。
  • 直接打印Entry对象s_n只会输出控件本身的标识符,也就是你看到的!entry,要获取输入内容必须调用Entry控件的.get()方法。

修改后可用代码

from tkinter import *

# 声明全局变量存储各输入框的最终值
s_n_val = ""
n_o_p_val = ""
s_t_val = ""
f_n_val = ""
c_val = ""

root = Tk()

s_n = Entry(root)
n_o_p = Entry(root)
s_t = Entry(root)
f_n = Entry(root)
c = Entry(root)

# insert方法第一个参数为插入位置索引,填0表示从输入框最开头插入
s_n.insert(0, "Enter Subreddit name")
n_o_p.insert(0, "Enter number of posts")
s_t.insert(0, "Enter search type")
f_n.insert(0, "Enter flair type")
c.insert(0, "Enter amount of comments")

s_n.pack()
n_o_p.pack()
s_t.pack()
f_n.pack()
c.pack()

def myclick():
    global s_n_val, n_o_p_val, s_t_val, f_n_val, c_val
    # 点击按钮时调用.get()方法获取输入值,存入全局变量
    s_n_val = s_n.get()
    n_o_p_val = n_o_p.get()
    s_t_val = s_t.get()
    f_n_val = f_n.get()
    c_val = c.get()

myButton = Button(root, text="Enter: ", command=myclick)
myButton.pack()

root.mainloop()

# 窗口关闭后即可直接打印存储的输入值
print(s_n_val)
print(n_o_p_val)
print(s_t_val)
print(f_n_val)
print(c_val)

补充说明

如果不需要关闭窗口后再处理输入值,可以直接把业务逻辑写在myclick回调函数中,点击按钮后即可实时拿到输入值执行后续操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:24:05