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

Python 3中如何将tk.Entry数据加入f-string?生成文本不显示输入内容

问题解决:Tkinter文本生成器无法获取输入框内容

问题原因

你定义second_text列表时,直接调用了anchor.get(),此时程序刚启动,输入框还无用户输入内容,所以列表里的字符串已被固定为包含空值的结果。后续用户输入内容后,second_text不会自动更新,因为它仅在初始化时生成一次。

解决办法

将second_text的定义移到add_text函数内部,每次点击"GENERATE TEXT"按钮时,才根据输入框当前的内容生成最新的字符串列表,这样就能实时获取用户输入的内容。

修改后的完整代码

import tkinter as tk
import random

win = tk.Tk()
win.title('TEXT MACHINE')
win.geometry('1020x600+400+250')
win.resizable(False, False)

anchor = tk.StringVar() 
entry_1 = tk.Entry(win, textvariable=anchor)
entry_1.grid(row=1, column=1, padx=20, sticky='wn')

def add_text():
    # 每次点击按钮时,根据当前输入生成second_text
    second_text = [f'Second text 1{anchor.get()}',
                   f'Second text 2{anchor.get()}',
                   f'Second text 3{anchor.get()}'
                  ]
    text_generated = random.choice(first_text) + random.choice(second_text)
    text.delete('1.0', tk.END)
    text.insert('insert', text_generated)

btn_1 = tk.Button(win, text='GENERATE TEXT', command=add_text, height=5, width=50)
btn_1.grid(row=1, column=0, pady=10, padx=20, sticky='w')

lbl_1 = tk.Label(win, text='Place Your Anchor Here')
lbl_1.grid(row=0, column=1, padx=20, sticky='ws')

text = tk.Text(win, width=120)
text.grid(row=2, column=0, columnspan=2, padx=(20, 120))

win.grid_rowconfigure(0, pad=50)
win.grid_columnconfigure(0, pad=50)

first_text = ['First text 1', 
              'First text 2', 
              'First text 3'
              ]

win.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:00