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
相关产品推荐
相关产品推荐

