如何在Tkinter同一窗口实现Entry文本复制及勾选自动填充功能
Tkinter实现Entry文本复制及勾选自动填充地址方案
嘿,作为Tkinter新手,你的这两个需求其实都很好实现,我给你写了一个完整的示例代码,涵盖了你要的所有功能,咱们一起来看看怎么弄:
import tkinter as tk from tkinter import ttk def copy_entry_text(): # 获取源Entry的文本,复制到目标Entry source_text = entry_source.get() # 先清空目标Entry原有内容,再插入新文本 entry_target.delete(0, tk.END) entry_target.insert(0, source_text) def sync_address(): # 根据勾选状态同步地址 if sync_var.get(): # 勾选时,把主申请人地址复制到共同申请人地址 co_app_addr.delete(0, tk.END) co_app_addr.insert(0, main_app_addr.get()) else: # 取消勾选时清空共同申请人地址(也可以保留,看你需求) co_app_addr.delete(0, tk.END) # 主窗口设置 root = tk.Tk() root.title("信贷申请模拟") root.geometry("500x300") # --- 第一部分:Entry复制粘贴功能 --- frame_copy = ttk.LabelFrame(root, text="文本复制演示") frame_copy.grid(row=0, column=0, padx=10, pady=10, sticky="nsew") ttk.Label(frame_copy, text="源文本:").grid(row=0, column=0, padx=5, pady=5) entry_source = ttk.Entry(frame_copy, width=30) entry_source.grid(row=0, column=1, padx=5, pady=5) ttk.Label(frame_copy, text="目标文本:").grid(row=1, column=0, padx=5, pady=5) entry_target = ttk.Entry(frame_copy, width=30) entry_target.grid(row=1, column=1, padx=5, pady=5) btn_copy = ttk.Button(frame_copy, text="复制文本", command=copy_entry_text) btn_copy.grid(row=2, column=0, columnspan=2, pady=10) # --- 第二部分:联合信贷申请地址同步 --- frame_loan = ttk.LabelFrame(root, text="联合信贷申请") frame_loan.grid(row=1, column=0, padx=10, pady=10, sticky="nsew") # 主申请人部分 ttk.Label(frame_loan, text="主申请人邮寄地址:").grid(row=0, column=0, padx=5, pady=5, sticky="w") main_app_addr = ttk.Entry(frame_loan, width=40) main_app_addr.grid(row=0, column=1, padx=5, pady=5) # 共同申请人部分 ttk.Label(frame_loan, text="共同申请人邮寄地址:").grid(row=1, column=0, padx=5, pady=5, sticky="w") co_app_addr = ttk.Entry(frame_loan, width=40) co_app_addr.grid(row=1, column=1, padx=5, pady=5) # 同步地址的复选框 sync_var = tk.BooleanVar() chk_sync = ttk.Checkbutton(frame_loan, text="与主申请人地址相同", variable=sync_var, command=sync_address) chk_sync.grid(row=2, column=0, columnspan=2, padx=5, pady=10, sticky="w") # 让布局自适应窗口大小 root.grid_columnconfigure(0, weight=1) root.grid_rowconfigure(0, weight=1) root.grid_rowconfigure(1, weight=1) root.mainloop()
关键部分解释:
- Entry复制功能:
copy_entry_text函数里,用entry_source.get()获取输入的文本,然后通过delete(0, tk.END)清空目标Entry,再用insert(0, source_text)把复制的内容放进去,这样就完成了复制粘贴。 - 地址同步功能:用
BooleanVar来跟踪复选框的勾选状态,当用户点击复选框时,会触发sync_address函数。如果sync_var.get()为True(勾选状态),就把主申请人地址Entry的内容复制到共同申请人的地址Entry里;取消勾选时可以选择清空或者保留,这里我写的是清空,你可以根据需求改。 - 布局优化:用
LabelFrame把不同功能模块分开,看起来更清晰;grid布局的sticky和weight属性让窗口大小变化时组件能自适应调整。
你可以直接运行这段代码,测试所有功能,有问题的话可以调整细节哦~
内容的提问来源于stack exchange,提问作者DP9007036
相关产品推荐
相关产品推荐

