Python TK实现的闹钟

简介: Python TK实现的闹钟

核心技术就是TK的UI、定时器(scheduler)的corn和播放音乐(playgame)。

UI部分

def job(self):
        # tkinter简单示例源码
        import tkinter as tk
        # 调用Tk()创建主窗口
        self.window = tk.Tk()
        self.window.wm_attributes('-topmost', 1)
        self.window.configure(background=TkPlugin.background())
        self.window.rowconfigure(0, weight=1)
        self.window.rowconfigure(3, weight=1)
        self.window.columnconfigure(0, weight=1)
        # 第1行
        self.lable_void1 = AdenLabel(self.window)
        self.lable_void1.grid(row=0, column=0, sticky=TkPlugin.sticky_all())
        # 第2行
        self.lable_message = AdenLabel(self.window, text="L2打个人", font='Helvetica -30 bold')
        self.lable_message.config(fg="#D9534F")
        self.lable_message.grid(row=1, column=0, sticky=TkPlugin.sticky_all())
        # 第3行
        self.lable_time = AdenLabel(self.window, text="2021-11-11 9:37:20", font='Helvetica -30 bold')
        self.lable_time.grid(row=2, column=0,  sticky=TkPlugin.sticky_all())
        # 第4行
        self.lable_void1 = AdenLabel(self.window)
        self.lable_void1.grid(row=3, column=0, sticky=TkPlugin.sticky_all())
        # 第5行
        btn_stop = AdenButton(self.window, text="停止音乐", width=8, command=lambda: self.stop())
        btn_stop.grid(row=4, column=0, sticky=tkinter.E, padx="70")
        btn_close = AdenButton(self.window, text="关闭闹钟", bg="#D9534F", width=8, command=lambda: self.close())
        btn_close.grid(row=4, column=0, sticky=tkinter.E)
        screenWidth = self.window.winfo_screenwidth()  # 屏幕宽度
        screenHeight = self.window.winfo_screenheight()  # 屏幕高度
        w=400
        h=300
        x=screenWidth-w-20
        y=screenHeight-h-80
        # 设置窗口大小和位置:窗口的宽与高,窗口距离屏幕的左边距和上边距
        self.window.geometry("%dx%d+%d+%d" % (w, h, x, y))
        # 给窗口起一个名字,也就是窗口的名字
        self.window.title("亚丁号闹钟")
        T = threading.Thread(target=self.music, args=())
        T.setDaemon(True)
        T.start()
        self.show()
        # 开启主循环,让窗口处于显示状态
        self.window.mainloop()

调度部分,写成固定值了 大家自己改一改,

def builder_aps_task(self):
        scheduler = BlockingScheduler(timezone='Asia/Shanghai')
        scheduler.add_job(self.job, 'cron', day="*", hour="8", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="10", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="12", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="14", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="16", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="18", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="20", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="22", minute="55")
        scheduler.add_job(self.job, 'cron', day="*", hour="0", minute="23")
        scheduler.add_job(self.job, 'cron', day="*", hour="0", minute="24")
        #ApsMonitorAlarmClock().job()
        # scheduler = BlockingScheduler(timezone='Asia/Shanghai')
        # scheduler.add_job(self.__show, 'interval', seconds=1)
        # scheduler.start()
        scheduler.start()

音乐部分

def music(self):
        music_array=["精灵村.mp3","猎人村.mp3","说话岛.mp3","芙罗兰村庄.mp3"
            ,"水上都市海因斯.mp3","奇岩城镇.mp3","古鲁丁村庄.mp3","亚丁城镇.mp3"
            ,"命运的召唤.mp3","CrossroadAtDawn.mp3","AfterTheStorm.mp3"]
        index=random.randint(0, len(music_array)-1)
        #file = Tools.get_resource_mp3_path() + os.sep +  music_array[index]
        file = "D:\\Code\\Python\\AdenHunter\\framework\\resource\\mp3" + os.sep + music_array[index]
        pygame.mixer.init()
        pygame.mixer.music.load(file)
        pygame.mixer.music.play(loops=10) # pygame.mixer.music.play(-1)
        while pygame.mixer.music.get_busy():  # 在音频播放为完成之前不退出程序
            pass

按钮和刷新时间方法

def stop(self):
        pygame.mixer.music.stop()
    def close(self):
        pygame.mixer.music.stop()
        if self.T is not None:
            Tools.stop_thread(self.T)
        self.window.destroy()
        pass
    def show(self):
        self.T = threading.Thread(target=self.__show, args=())
        self.T.setDaemon(True)
        self.T.start()
    def __show(self):
        while 1:
                now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                self.lable_time['text'] = '{0}'.format(now_time)
                time.sleep(1)

好了细节大家自能是自己改一改了

目录
相关文章
|
2月前
|
Python
Python TK实现的托盘
Python TK实现的托盘
35 0
|
2月前
|
Python
Python TK实现的取色
Python TK实现的取色
33 0
|
2月前
|
Python
Python TK实现的日历
Python TK实现的日历
36 0
|
2月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
36 0
|
2月前
|
存储 Python
Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序
Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序
50 0
|
11天前
|
存储 Python
如何用Python做一个闹钟
如何用Python做一个闹钟
|
2月前
|
Python
Python 闹钟程序
Python 闹钟程序
53 2
|
2月前
|
Python
python tk 显示当前日期和显示阴历
python tk 显示当前日期和显示阴历
29 1
|
2月前
|
人工智能 IDE 开发工具
Python TK输入框Entry设置高度
Python TK输入框Entry设置高度
69 0
|
2月前
|
Python
Python tk 弹出对话框
Python tk 弹出对话框
39 0

相关实验场景

更多