Python实验——tkinter 电子时钟

实验说明:

编写程序,实现如下图所示的电子时钟。要求:
(1)不显示标题栏,总是顶端显示,不被其他窗口覆盖;
(2)实时显示日期和时间;
(3)可以用鼠标左键按住拖动,在电子时钟上右击可以结束程序;
(4)拖动时透明度变大,鼠标左键抬起时恢复半透明状态

时钟如下图所示

在这里插入图片描述

import tkinter as tk
import time

#定义一个名为Clock的类,继承自tk.Tk类。
class Clock(tk.Tk):
    #定义Clock类的构造函数
    def __init__(self):
        #调用父类tk.Tk的构造函数,创建一个窗口。
        super().__init__()
        self.overrideredirect(True)  # 不显示标题栏
        self.attributes('-topmost', True)  # 总是顶端显示
        self.geometry("+0+0")  # 初始位置为屏幕左上角
        self.bind("<Button-1>", self.start_move)
        self.bind("<ButtonRelease-1>", self.stop_move)
        self.bind("<B1-Motion>", self.on_motion)
        self.bind("<Button-3>", self.quit)
        self.opacity = 0.3  # 初始透明度
        self.attributes("-alpha", self.opacity)
        self.label = tk.Label(self, font=('Courier', 40, 'bold'))
        self.label.pack()
        self.update_clock()
#用于更新时钟
    def update_clock(self):
        now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        self.label.configure(text=now)
        self.after(1000, self.update_clock)
#处理窗口的鼠标左键单击事件
    def start_move(self, event):
        self.start_x = event.x
        self.start_y = event.y
        self.opacity = 1.0
        self.attributes("-alpha", self.opacity)
# 处理窗口的鼠标右键单击事件
    def stop_move(self, event):
        self.opacity = 0.3
        self.attributes("-alpha", self.opacity)

    def on_motion(self, event):
        x = self.winfo_x() + (event.x - self.start_x)
        y = self.winfo_y() + (event.y - self.start_y)
        self.geometry("+%s+%s" % (x, y))

    def quit(self, event):
        self.destroy()


if __name__ == '__main__':
    clock = Clock()
    clock.mainloop()

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Python程序,使用Tkinter库实现了一个基本的电子时钟。 ```python import tkinter as tk import time class Clock: def __init__(self, master): self.master = master self.master.title("电子时钟") self.master.geometry("250x100") self.clock_label = tk.Label(self.master, font=('times', 20, 'bold'), bg='white') self.clock_label.pack(fill=tk.BOTH, expand=1) self.update_clock() def update_clock(self): current_time = time.strftime('%H:%M:%S') self.clock_label.config(text=current_time) self.master.after(1000, self.update_clock) if __name__ == '__main__': root = tk.Tk() clock = Clock(root) root.mainloop() ``` 这个程序使用了Tkinter库来创建一个窗口和文本标签,用于显示当前时间。在构造函数中,我们创建了一个标签并设置了字体、背景颜色和文本。我们还调用了`update_clock()`函数,该函数使用`after()`方法来定期更新时钟。`after()`方法使用毫秒为单位的时间间隔和回调函数,以便在指定的时间间隔后调用回调函数。 在`update_clock()`函数中,我们使用Python内置的`time`模块来获取当前时间,并将其格式化为小时、分钟和秒的字符串。然后,我们将这个字符串设置为标签的文本,并使用`after()`方法来定期更新时钟。 最后,我们创建了一个`Tk`对象,并将其传递给`Clock`类的构造函数,然后启动了主事件循环。 这个程序只是一个最基本的电子时钟,但你可以根据需要对其进行修改和扩展,以满足你的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值