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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:53:21