【教程】使用ChatGPT制作基于Tkinter的桌面时钟
创始人
2025-06-01 15:36:23

目录

描述

代码

效果

说明


描述

        给ChatGPT的描述内容:

        python在桌面上显示动态的文字,不要显示窗口边框。窗口背景和标签背景都是透明的,但标签内的文字是有颜色。使用tkinter库实现,并以class的形式书写,方便用户对内容进行扩展开发。

        窗口默认出现在屏幕的中间位置。窗口中的标签需要包含两项内容。其中一项用于实时显示当前的日期和时间,精确到毫秒。另一项从txt文件中读取显示,若没有txt文件则显示“None”。

        在未锁定状态下,鼠标可以拖动窗口。在锁定状态下,窗口无法通过鼠标的拖动而移动。在窗口中添加一个“锁定”按钮,当鼠标移动到窗口上方时,显示“锁定”按钮,鼠标移走后,隐藏“锁定”按钮。通过“锁定”按钮,窗口进入锁定状态。在锁定状态下,当鼠标移动到窗口上方时,显示一个“解除锁定”的按钮,鼠标移走后,隐藏该“解除锁定”按钮。通过点击“解除锁定”按钮,进入未锁定状态。锁定和未锁定状态是互相切换的。

        给窗口添加一个鼠标右键的功能,在右键菜单中,可以点击“退出”,从而退出应用。

        窗口中的内容居中显示。

代码

给出的代码,并经过微调:

import tkinter as tk
import datetime
import math
import locale# Set the locale to use UTF-8 encoding
locale.setlocale(locale.LC_ALL, 'en_US.utf8')class TransparentWindow(tk.Tk):def __init__(self, text_file=None):super().__init__()self.attributes('-alpha', 1) # 设置窗口透明度# self.attributes('-topmost', True) # 窗口置顶# self.attributes('-transparentcolor', '#000000')self.overrideredirect(True) # 去掉窗口边框self.locked = False # 初始化锁定状态self.mouse_x = 0self.mouse_y = 0self.config(bg='#000000', highlightthickness=0, bd=0)# 获取屏幕尺寸和窗口尺寸,使窗口居中screen_width = self.winfo_screenwidth()screen_height = self.winfo_screenheight()window_width = 400window_height = 100x = (screen_width - window_width) // 2y = (screen_height - window_height) // 2self.geometry('{}x{}+{}+{}'.format(window_width, window_height, x, y))# 添加日期时间标签self.datetime_label = tk.Label(self, text='', font=('Arial', 20), fg='#FFFFFF', bg='#000000')self.datetime_label.place(relx=0.5, y=20, anchor='center')# 提示标签self.note_label = tk.Label(self, text='123', font=('Arial', 14), fg='#FFFFFF', bg='#000000')self.note_label.place(relx=0.5, y=50, anchor='center')# 文本标签self.text_label = tk.Label(self, text='', font=('Arial', 14), fg='#FFFFFF', bg='#000000')self.text_label.place(relx=0.5, y=80, anchor='center')# 添加锁定按钮self.lock_button = tk.Button(self, text='锁定', font=('Arial', 10), command=self.toggle_lock)self.toggle_lock_button(True)self.toggle_lock_button(False)# 添加解锁按钮self.unlock_button = tk.Button(self, text='解除锁定', font=('Arial', 10), command=self.toggle_lock)self.toggle_unlock_button(True)self.toggle_unlock_button(False)# 定时更新日期时间标签self.update_datetime()# 定时更新text标签self.update_text_label()# 定时更新note标签self.update_note_label()# 绑定鼠标事件self.bind('', self.on_left_button_down)self.bind('', self.on_left_button_up)self.bind('', self.on_mouse_drag)self.bind('', self.on_mouse_enter)self.bind('', self.on_mouse_leave)# 创建右键菜单self.menu = tk.Menu(self, tearoff=0)self.menu.add_command(label="退出", command=self.quit)self.bind("", self.show_menu)def toggle_lock_button(self, show=True):if show:self.lock_button.place(relx=1, rely=0.85, anchor='e')else:self.lock_button.place_forget()def toggle_unlock_button(self, show=True):if show:self.unlock_button.place(relx=1, rely=0.85, anchor='e')else:self.unlock_button.place_forget()def show_menu(self, event):self.menu.post(event.x_root, event.y_root)def update_datetime(self):now = datetime.datetime.now().strftime('%Y-%m-%d     \u270d     %H:%M:%S.%f')[:-4]msg = f'{now}'self.datetime_label.configure(text=msg)self.after(10, self.update_datetime)def update_text_label(self):now = '小锋学长生活大爆炸'self.text_label.configure(text=now)self.after(1000, self.update_text_label)def update_note_label(self):# 指定日期,格式为 年-月-日specified_start_date = datetime.date(2023, 2, 20)specified_end_date = datetime.date(2023, 7, 9)today = datetime.date.today()# 计算距离指定日期过了多少周start_delta = today - specified_start_datenum_of_weeks = math.ceil(start_delta.days / 7)# 计算距离指定日期剩余多少周end_delta = specified_end_date - todayremain_weeks = math.ceil(end_delta.days / 7)msg = f'当前第{num_of_weeks}周, 剩余{remain_weeks}周({end_delta.days}天)'self.note_label.configure(text=msg)self.after(1000*60, self.update_note_label)def toggle_lock(self):if self.locked:self.locked = Falseself.toggle_lock_button(True)self.toggle_unlock_button(False)else:self.locked = Trueself.toggle_lock_button(False)self.toggle_unlock_button(True)def on_left_button_down(self, event):self.mouse_x = event.xself.mouse_y = event.ydef on_left_button_up(self, event):self.mouse_x = 0self.mouse_y = 0def on_mouse_drag(self, event):if not self.locked:x = self.winfo_x() + event.x - self.mouse_xy = self.winfo_y() + event.y - self.mouse_yself.geometry('+{}+{}'.format(x, y))def on_mouse_leave(self, event):self.lock_button.place_forget()self.unlock_button.place_forget()def on_mouse_enter(self, event):if not self.locked:self.toggle_lock_button(True)self.toggle_unlock_button(False)else:self.toggle_lock_button(False)self.toggle_unlock_button(True)if __name__ == '__main__':app = TransparentWindow(text_file='text.txt')app.mainloop()

效果

说明

        关于背景颜色、日期等等内容,大家可以修改相应的代码。

相关内容

热门资讯

漂移是什么意思(摇杆漂移是什么... 本篇文章极速百科给大家谈谈漂移是什么意思,以及摇杆漂移是什么意思对应的知识点,希望对各位有所帮助,不...
车架号后四位是什么(车架号后四... 本篇文章极速百科给大家谈谈车架号后四位是什么,以及车架号后四位是什么在哪里看对应的知识点,希望对各位...
隐形眼镜基弧是什么意思,请问,... 隐形眼镜基弧是什么意思目录隐形眼镜基弧是什么意思请问,配隐形眼镜的时候要不要关注那个基弧?隐形眼镜基...
广西省崇左市属于什么市,祟左是... 广西省崇左市属于什么市目录广西省崇左市属于什么市祟左是地级市还是县级市崇左是南宁得直辖市吗 为什么区...
内衣尺码大小分类,内衣的型号分... 内衣尺码大小分类目录内衣尺码大小分类内衣的型号分哪几种?什么abc事什么意思?34、36是尺寸嘛?内...
几个防止卫生间反味小妙招,卫生... 几个防止卫生间反味小妙招目录几个防止卫生间反味小妙招卫生间反臭怎么办?卫生间怎么样防臭几个防止卫生间...
庄子中的成语和解释,四个出自《... 庄子中的成语和解释目录庄子中的成语和解释四个出自《庄子》的成语及解释《庄子》中的成语及解释(按篇目分...
怎么切翡翠原石(收玉石的联系方... 本篇文章极速百科给大家谈谈怎么切翡翠原石,以及收玉石的联系方式对应的知识点,希望对各位有所帮助,不要...
关于燕子的古诗,描写燕子的古诗... 关于燕子的古诗目录关于燕子的古诗描写燕子的古诗描写燕子的古诗有哪些?关于燕子的古诗关于燕子的古诗 ...
好巧不巧是什么意思,好巧不巧什... 好巧不巧是什么意思目录好巧不巧是什么意思好巧不巧什么意思?“无巧不巧”究竟何解?好巧不巧是什么意思好...
关东煮里面放什么配料啊,关东煮... 关东煮里面放什么配料啊目录关东煮里面放什么配料啊关东煮的配料关东煮需要哪些调味料呀?请问,关东煮都可...
极速进化满电出发!长安深蓝SL... 本篇文章极速百科给大家谈谈极速进化满电出发!长安深蓝SL03开启预售,以及长安蓝鲸plus新车报价对...
比亚迪f3汽车报价(比亚迪f3... 今天给各位分享比亚迪f3汽车报价的知识,其中也会对比亚迪f3价格及图片易车进行解释,如果能碰巧解决你...
两台电脑怎么共享一台打印机,两... 两台电脑怎么共享一台打印机目录两台电脑怎么共享一台打印机两台电脑如何共享一台打印机?请问一个打印机怎...
16个复韵母有哪些(16个复韵... 本篇文章极速百科给大家谈谈16个复韵母有哪些,以及16个复韵母怎么读拼音视频对应的知识点,希望对各位...
樟树有什么作用,樟树有什么作用... 樟树有什么作用目录樟树有什么作用樟树有什么作用?樟树的用途有哪些?樟树有什么作用?樟树有什么作用 ...
dazl启动子的作用,启动子和... dazl启动子的作用目录dazl启动子的作用启动子和终止子是什么作用的?dazl启动子的作用启动子的...
写字楼是干什么的 极速百科网 ... 写字楼是干什么的目录写字楼是干什么的写字楼是干什么的写字楼是干什么的 写字楼的功能介绍写字楼是干什么...
骄傲的两种解释,骄傲的意思是什... 骄傲的两种解释目录骄傲的两种解释骄傲的意思是什么?骄傲的两种解释骄傲的两种解释 “骄傲”有两个...
jp是哪个国家的缩写(jp是哪... 本篇文章极速百科给大家谈谈jp是哪个国家的缩写,以及jp是哪个国家的缩写名字对应的知识点,希望对各位...
苹果手机显示不支持此配件怎么办... 不支持此配件怎么解决 苹果iphone可能不支持此配件怎么办怎么解除不支持此配件 不支持此配件怎么解...
支付宝借呗的利息是多少,蚂蚁借... 支付宝借呗的利息是多少目录支付宝借呗的利息是多少蚂蚁借呗利息是怎么计算的蚂蚁借呗的利息是多少借呗的利...
关于兰字的词语或成语越多越好.... 关于兰字的词语或成语越多越好.目录关于兰字的词语或成语越多越好.有关兰字的成语有哪些关于兰的词语或成...
宝马m5多少钱是不是很贵呢?(... 本篇文章极速百科给大家谈谈宝马m5多少钱是不是很贵呢?,以及宝马m5li多少钱对应的知识点,希望对各...
辽宁省喀左县在哪个城市,辽宁省... 辽宁省喀左县在哪个城市目录辽宁省喀左县在哪个城市辽宁省朝阳市喀左县的邮政编码辽宁省喀左县在哪里辽宁省...
关于marcjacobs香水,... 关于marcjacobs香水目录关于marcjacobs香水marcjacobs香水(探索时尚与艺术...
四级英语考试时间分配,大学英语... 四级英语考试时间分配目录四级英语考试时间分配大学英语四级考多长时间?英语四级考试时间安排?英语四级考...
dnfbuff强化有什么用,地... dnfbuff强化有什么用目录dnfbuff强化有什么用地下城buff强化栏DNF中人物的Buff有...
幼儿园孩子新年祝福语简短,适合... 幼儿园孩子新年祝福语简短目录幼儿园孩子新年祝福语简短适合幼儿园小朋友说的新年祝福语幼儿园老师给小朋友...
正断层有哪些断层组合类型,断层... 正断层有哪些断层组合类型目录正断层有哪些断层组合类型断层的组合类型简答题 断层的类型及组合形式有哪些...