鱼C论坛

 找回密码
 立即注册
查看: 86|回复: 6

[已解决]Tkinter 如何在标题栏上显示动态时间啊 ?

[复制链接]
发表于 前天 18:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from tkinter import *
  2. import time
  3. root=Tk()
  4. t=StringVar()
  5. def gyl():
  6.     t.set(time.strftime("%X"))
  7.     root.after(1000,gyl)
  8. gyl()
  9. root.title(t)
  10. mainloop()
复制代码


使用字符型变量来编写程序,怎么显示出时间啊?
最佳答案
昨天 08:50
  1. from tkinter import *
  2. import time
  3. root=Tk()

  4. def gyl():
  5.     t=StringVar(name=time.strftime("%X"))
  6.     root.title(t)
  7.     root.after(1000,gyl)
  8. gyl()
  9. mainloop()
复制代码


这样改好像可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 18:54 | 显示全部楼层
原代码问题分析:

原代码存在两个关键问题:
1. root.title(t) 错误地将StringVar对象赋值给title
2. 缺少初始时间设置和持续更新机制

正确实现方案:

  1. from tkinter import *
  2. import time

  3. root = Tk()

  4. def update_time():
  5.     current_time = time.strftime("%H:%M:%S")  # 获取当前时间
  6.     root.title(current_time)                 # 直接设置标题
  7.     root.after(1000, update_time)            # 每秒更新一次

  8. update_time()  # 初始化调用
  9. root.mainloop()
复制代码

关键修改点说明:

  • 直接使用字符串赋值给title,而不是StringVar对象
  • 通过递归调用after()实现持续更新
  • 时间格式说明:%H=时(24小时制),%M=分,%S=秒


扩展用法:

若想添加其他固定文字,可以这样修改:

  1. root.title(f"当前时间:{current_time}")  # 使用f-string格式化字符串
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:56 | 显示全部楼层
FishC 发表于 2025-5-21 18:54
原代码存在两个关键问题:
1. root.title(t) 错误地将StringVar对象赋值给title
2. 缺少初始时间设置和 ...

要求使用字符型变量( StringVar )编写程序哈!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 20:57 | 显示全部楼层
刚尝试做了下,这好像有点难…

给个思路:开个线程,在使用stringvar.trace,每次触发就root.title改名称

不过这确实很难啊…
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 08:50 | 显示全部楼层    本楼为最佳答案   
  1. from tkinter import *
  2. import time
  3. root=Tk()

  4. def gyl():
  5.     t=StringVar(name=time.strftime("%X"))
  6.     root.title(t)
  7.     root.after(1000,gyl)
  8. gyl()
  9. mainloop()
复制代码


这样改好像可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 20:16 | 显示全部楼层


第六行 t=StringVar(name=time.strftime("%X")) 为什么要加入 name ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
本帖最后由 快速收敛 于 2025-5-23 08:46 编辑
dragov 发表于 2025-5-22 20:16
第六行 t=StringVar(name=time.strftime("%X"))  ,为什么要加入 name ?


首先感谢你的最佳,碰巧碰巧,看源码的,tk也没学过。我是直接拿你的代码测试,

d6b41d07-3b9c-4df6-9b53-c6f49a9a60cf.png

发现右上角的title,点击进源码StringVar,继承自Variable,查看Variable的定义:

5045fbfc-e8be-45aa-8749-92652d012738.png

发现与刚刚title相同的,没有传入name,那么就是用默认的
  1. self._name = 'PY_VAR' + repr(_varnum)
复制代码


如果传入,就是用传入的name。

修改了代码,测试发现可行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-23 11:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表