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

如何用Tkinter创建多行输入框并将内容存入变量?

解决Tkinter多行输入组件内容存入变量的问题

你遇到的核心问题是:Entry仅支持单行输入,而Text组件无法像Entry那样直接通过textvariable绑定变量。下面是具体的解决方法:

1. 修正Text组件的实例化方式

你之前的代码将Text组件创建和place()布局写在一行,导致body_TextBox实际是None(因为place()返回None),后续无法调用组件的方法。正确写法是分开:

import tkinter as tk

window = tk.Tk()
# 先创建Text组件实例
body_TextBox = tk.Text(window, border=0, width=68, height=5, bg='#BAE1E3', font="inter")
# 再进行布局
body_TextBox.place(x=330, y=342)

2. 获取Text组件的输入内容并传入函数

Text组件没有textvariable属性,需要通过get()方法手动获取内容,语法为组件.get(起始索引, 结束索引):

  • 1.0:表示第一行第0列(Text组件的索引格式是行.列,行从1开始,列从0开始)
  • tk.END:表示文本末尾位置

示例代码如下:

def process_input(content):
    # 这里是你需要传入内容的目标函数
    print("处理的内容:", content)

def get_and_pass_content():
    # 获取Text组件的内容,strip()去掉末尾自动添加的换行符
    input_content = body_TextBox.get("1.0", tk.END).strip()
    # 将内容传入其他函数
    process_input(input_content)

# 添加一个按钮触发获取操作(也可以在其他事件中调用)
submit_btn = tk.Button(window, text="提交", command=get_and_pass_content)
submit_btn.place(x=330, y=420)

window.mainloop()

额外提示

如果需要实时同步内容到变量(类似textvariable的效果),可以给Text组件绑定<KeyRelease>事件,每次输入时更新变量:

input_var = tk.StringVar()

def update_var(event):
    input_var.set(body_TextBox.get("1.0", tk.END).strip())

body_TextBox.bind("<KeyRelease>", update_var)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:25:19