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

如何在Tkinter的Entry框填写后自动在GUI区域填充日期

解决方案:绑定焦点离开事件实现自动填充时间

不用纠结trace或validate方法,这俩场景不对。你需要的是当第一个Entry失去焦点时(比如按Tab切换)触发时间填充动作,直接给Entry绑定<<FocusOut>>事件就行,步骤如下:

核心思路

  • 给Release Number的Entry绑定焦点离开事件,当用户按Tab或点击其他控件让它失去焦点时,触发时间填充函数。
  • 在函数里用datetime模块获取当前时间,直接更新目标Label的文本。

完整代码示例

import tkinter as tk
from datetime import datetime

def fill_current_time(event=None):
    # 获取当前时间,格式可自定义,比如"%Y-%m-%d %H:%M:%S"
    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    # 更新Label的文本
    time_label.config(text=current_time)

# 创建主窗口
root = tk.Tk()
root.title("Excel写入工具")

# 创建Release Number输入框
release_label = tk.Label(root, text="Release Number:")
release_label.grid(row=0, column=0, padx=5, pady=5)
release_entry = tk.Entry(root)
release_entry.grid(row=0, column=1, padx=5, pady=5)
# 绑定焦点离开事件,触发时间填充
release_entry.bind("<<FocusOut>>", fill_current_time)

# 创建Date/Time标签
time_label_title = tk.Label(root, text="Date/Time:")
time_label_title.grid(row=1, column=0, padx=5, pady=5)
time_label = tk.Label(root, text="")
time_label.grid(row=1, column=1, padx=5, pady=5)

# 主循环
root.mainloop()

关键说明

  1. <>事件:这个事件在控件失去焦点时触发,不管是按Tab切换、点击其他控件,都能触发,比绑定事件更通用。
  2. 时间格式自定义:strftime里的参数可以根据需求调整,比如只显示日期用"%Y-%m-%d",只显示时间用"%H:%M:%S"。
  3. 为什么不用trace?trace是监听StringVar的内容变化,只要用户输入字符就会触发,不符合“切换焦点时才填充”的需求。
  4. 为什么不用validate?validate是用来验证输入合法性的,返回布尔值决定是否允许输入,它的作用不是触发业务动作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:31:07