怎么用Python和Tkinter制作一个简单的闹钟程序

其他教程   发布日期:2025年03月28日   浏览次数:93

本文小编为大家详细介绍“怎么用Python和Tkinter制作一个简单的闹钟程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Python和Tkinter制作一个简单的闹钟程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

现在让我们逐个解释每个代码块的作用。

  1. from tkinter import *
  2. import datetime
  3. import time
  4. import winsound
  5. from threading import *

首先,我们导入了 tkinter 库、datetime、time 库、winsound 库以及 threading 库。

  1. root = Tk()
  2. root.geometry("400x200")

创建一个名为 root 的窗口,并设置窗口大小为 400x200。

  1. def Threading():
  2. t1=Thread(target=alarm)
  3. t1.start()

定义一个函数 Threading(),它将创建一个名为 t1 的新线程,该线程的目标是运行 alarm() 函数,并启动该线程。

  1. def alarm():
  2. while True:
  3. set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}"
  4. time.sleep(1)
  5. current_time = datetime.datetime.now().strftime("%H:%M:%S")
  6. print(current_time,set_alarm_time)
  7. if current_time == set_alarm_time:
  8. print("Time to Wake up")
  9. winsound.PlaySound("sound.wav",winsound.SND_ASYNC)

这个函数 alarm() 是在一个单独的线程中运行的,该线程每隔一秒钟检查一次当前时间是否等于设置的时间。如果当前时间和设置时间相等,就会调用 winsound.PlaySound() 播放一个音乐文件,表示时间到了。

在函数开头,首先通过 hour.get()、minute.get() 和 second.get() 获取用户在界面上设置的小时、分钟和秒数,然后将它们组合成一个字符串 set_alarm_time。接下来,使用 time.sleep() 让线程休眠 1 秒钟,这样每隔 1 秒钟就会检查一次当前时间是否等于设置时间。

然后,通过 datetime.datetime.now().strftime("%H:%M:%S") 获取当前时间,并将其格式化为小时、分钟和秒数的字符串 current_time。最后,如果 current_time 等于 set_alarm_time,就会打印一条消息并调用 winsound.PlaySound() 播放一个音乐文件。

  1. Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10)
  2. Label(root,text="Set Time",font=("Helvetica 15 bold")).pack()
  3. frame = Frame(root)
  4. frame.pack()
  5. hour = StringVar(root)
  6. hours = ('00', '01', '02', '03', '04', '05', '06', '07',
  7. '08', '09', '10', '11', '12', '13', '14', '15',
  8. '16', '17', '18', '19', '20', '21', '22', '23', '24'
  9. )
  10. hour.set(hours[0])
  11. hrs = OptionMenu(frame, hour, *hours)
  12. hrs.pack(side=LEFT)
  13. minute = StringVar(root)
  14. minutes = ('00', '01', '02', '03', '04', '05', '06', '07',
  15. '08', '09', '10', '11', '12', '13', '14', '15',
  16. '16', '17', '18', '19', '20', '21', '22', '23',
  17. '24', '25', '26', '27', '28', '29', '30', '31',
  18. '32', '33', '34', '35', '36', '37', '38', '39',
  19. '40', '41', '42', '43', '44', '45', '46', '47',
  20. '48', '49', '50', '51', '52', '53', '54', '55',
  21. '56', '57', '58', '59', '60')
  22. minute.set(minutes[0])
  23. mins = OptionMenu(frame, minute, *minutes)
  24. mins.pack(side=LEFT)
  25. second = StringVar(root)
  26. seconds = ('00', '01', '02', '03', '04', '05', '06', '07',
  27. '08', '09', '10', '11', '12', '13', '14', '15',
  28. '16', '17', '18', '19', '20', '21', '22', '23',
  29. '24', '25', '26', '27', '28', '29', '30', '31',
  30. '32', '33', '34', '35', '36', '37', '38', '39',
  31. '40', '41', '42', '43', '44', '45', '46', '47',
  32. '48', '49', '50', '51', '52', '53', '54', '55',
  33. '56', '57', '58', '59', '60')
  34. second.set(seconds[0])
  35. secs = OptionMenu(frame, second, *seconds)
  36. secs.pack(side=LEFT)
  37. Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20)

这段代码用于添加标签、框架、按钮和选项菜单。先创建了一个框架 frame,然后创建了三个 StringVar 类型的变量 hour,minute,second 来存储用户选择的小时、分钟和秒数。然后定义了三个元组 hours,minutes,seconds 分别存储 00 到 60 的数字字符串,其中的 0~9 数字前面补零,保证格式一致。接着用 OptionMenu 创建了三个选项菜单,分别用来选择小时、分钟和秒数。

综上所述,本文提供了一个基本的闹钟应用程序,可以通过GUI界面设置和启动。当闹钟时间到达时,应用程序将播放声音,以提醒用户。

附完整源码:

  1. # 导入所需库
  2. from tkinter import *
  3. import datetime
  4. import time
  5. import winsound
  6. from threading import *
  7. # 创建对象
  8. root = Tk()
  9. # 设置几何体
  10. root.geometry("400x200")
  11. # 使用线程
  12. def Threading():
  13. t1=Thread(target=alarm)
  14. t1.start()
  15. def alarm():
  16. # 无限循环
  17. while True:
  18. # 设置警报
  19. set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}"
  20. # 等待一秒钟
  21. time.sleep(1)
  22. # 获取当前时间
  23. current_time = datetime.datetime.now().strftime("%H:%M:%S")
  24. print(current_time,set_alarm_time)
  25. # 检查设置的报警是否等于当前时间
  26. if current_time == set_alarm_time:
  27. print("Time to Wake up")
  28. # 播放声音
  29. winsound.PlaySound("sound.wav",winsound.SND_ASYNC)
  30. # 添加标签、框架、按钮、选项菜单
  31. Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10)
  32. Label(root,text="Set Time",font=("Helvetica 15 bold")).pack()
  33. frame = Frame(root)
  34. frame.pack()
  35. hour = StringVar(root)
  36. hours = ('00', '01', '02', '03', '04', '05', '06', '07',
  37. '08', '09', '10', '11', '12', '13', '14', '15',
  38. '16', '17', '18', '19', '20', '21', '22', '23', '24'
  39. )
  40. hour.set(hours[0])
  41. hrs = OptionMenu(frame, hour, *hours)
  42. hrs.pack(side=LEFT)
  43. minute = StringVar(root)
  44. minutes = ('00', '01', '02', '03', '04', '05', '06', '07',
  45. '08', '09', '10', '11', '12', '13', '14', '15',
  46. '16', '17', '18', '19', '20', '21', '22', '23',
  47. '24', '25', '26', '27', '28', '29', '30', '31',
  48. '32', '33', '34', '35', '36', '37', '38', '39',
  49. '40', '41', '42', '43', '44', '45', '46', '47',
  50. '48', '49', '50', '51', '52', '53', '54', '55',
  51. '56', '57', '58', '59', '60')
  52. minute.set(minutes[0])
  53. mins = OptionMenu(frame, minute, *minutes)
  54. mins.pack(side=LEFT)
  55. second = StringVar(root)
  56. seconds = ('00', '01', '02', '03', '04', '05', '06', '07',
  57. '08', '09', '10', '11', '12', '13', '14', '15',
  58. '16', '17', '18', '19', '20', '21', '22', '23',
  59. '24', '25', '26', '27', '28', '29', '30', '31',
  60. '32', '33', '34', '35', '36', '37', '38', '39',
  61. '40', '41', '42', '43', '44', '45', '46', '47',
  62. '48', '49', '50', '51', '52', '53', '54', '55',
  63. '56', '57', '58', '59', '60')
  64. second.set(seconds[0])
  65. secs = OptionMenu(frame, second, *seconds)
  66. secs.pack(side=LEFT)
  67. Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20)
  68. # 执行Tkinter
  69. root.mainloop()

以上就是怎么用Python和Tkinter制作一个简单的闹钟程序的详细内容,更多关于怎么用Python和Tkinter制作一个简单的闹钟程序的资料请关注九品源码其它相关文章!