您在上面引用的文档页面指出,为了获得将来的用户属性,用户必须通过电子邮件验证所有权。您可以通过标准方式执行此操作,也可以手动指定状态:创建CLoud Dir用户时已确认,例如
from tkinter import *
import pygame
import time
pygame.mixer.init()
window = Tk()
window.geometry('300x200')
window.title('Alarm')
#logo = PhotoImage(file='alarm.gif')
lab_1 = Label(window,text='Alarm Clock',font=('Times',20,'bold')).grid(column=200,row=0)
#lab_2=Label(window,image=logo).grid(column=300,row=0,columnspan=3)
lab_3 = Label(window,text='Hours',font=('Comic',10,'bold')).grid(column=50,row=10,columnspan=3)
lab_4 = Label(window,text='Minutes','bold')).grid(column=90,columnspan=3)
# Alarm class
class Alarm:
alarm_id = 1
def __init__(self,hours,minutes,ampm,sound_file):
self.sound_file = sound_file
# Convert hours,ampm to a timestamp
# Save time as a timestamp
t = time.localtime()
t = time.strptime(f"{t.tm_year}-{t.tm_mon}-{t.tm_mday} {hours} {minutes} {ampm}","%Y-%m-%d %I %M %p")
self.alarm_time = time.mktime(t)
# Number of seconds to snooze
self.snooze_time = None
self.completed = False # Set to True after alarm has gone off
self.id = Alarm.alarm_id
Alarm.alarm_id += 1
# Every time this is called,it checks the time to see if the alarm should go off
def check_time(self,cur_time):
# Use alarm time or snooze time?
on_time = self.snooze_time if self.snooze_time else self.alarm_time
# Since might not be called when seconds is 0,check if it is with one minute of alarm time
time_diff = cur_time - on_time
if not self.completed and time_diff >= 0 and time_diff < 60:
self.completed = True
alarm_ringtone = pygame.mixer.music.load(self.sound_file)
pygame.mixer.music.play()
# Reset after 30 minutes - add 24 hours (daily timer)
elif self.completed and time_diff > 1800 and time_diff < 1860:
self.completed = False
self.snooze_time = None
self.alarm_time += 24 * 60 * 60
def snooze(self,minutes):
if self.completed and pygame.mixer.music.get_busy():
self.snooze_time = time.time() + (minutes * 60)
self.completed = False
pygame.mixer.music.stop()
# Convert to string for printing
def __str__(self):
id_str = f"[{self.id}]: "
if self.completed:
return id_str + ("Alarm in progress" if pygame.mixer.music.get_busy() else "Alarm completed")
elif self.snooze_time:
time_left = int(self.snooze_time - time.time())
minutes = time_left // 60
seconds = time_left % 60
if minutes:
return id_str + f"Snoozing for {minutes} minutes and {seconds} seconds"
else:
return id_str + f"Snoozing for {seconds} seconds"
else:
return id_str + f"Alarm set for {time.ctime(self.alarm_time)}"
# This list holds all alarms
all_alarms = []
# Tell all alarms to check the time
def check_alarms():
now = time.time()
for alarm in all_alarms:
print(f"Checking: {alarm}");
alarm.check_time(now)
# Call again after 1 second
window.after(1000,check_alarms)
# Creates a single object of the Alarm class
# Uses values from the option controls
def create_alarm():
hours = int(hrs_opt_ctrl.get())
minutes = int(min_opt_ctrl.get())
ampm = tme_ctrl.get()
alarm = Alarm(hours,"alarm.mp3")
all_alarms.append(alarm)
print(f"Adding: {alarm}");
# Snoozes all active alarms for 2 minutes
def snooze_current():
for alarm in all_alarms:
alarm.snooze(2)
but = Button(window,text='Set Alarm','bold'),command=create_alarm).grid(column=100,row=15)
snooze = Button(window,text='Snooze',command=snooze_current).grid(column=100,row=16)
opt_hrs = []
opt_min = []
opt_tme = ('AM','PM')
for i in range(1,13):
opt_hrs.append(i)
for j in range(0,60):
opt_min.append(j)
hrs_opt_ctrl = StringVar()
min_opt_ctrl = StringVar()
tme_ctrl = StringVar()
hrs_lab = OptionMenu(window,hrs_opt_ctrl,*opt_hrs).grid(column=70,columnspan=3)
min_lab = OptionMenu(window,min_opt_ctrl,*opt_min).grid(column=100,columnspan=3)
tme_lab = OptionMenu(window,tme_ctrl,*opt_tme).grid(column=120,columnspan=3)
# Fill with default values of current time
hrs_opt_ctrl.set(str(int(time.strftime('%I'))))
min_opt_ctrl.set(str(int(time.strftime('%M'))))
tme_ctrl.set(time.strftime('%p'))
check_alarms()
window.mainloop()
pygame.mixer.music.stop()
本文链接:https://www.f2er.com/3096626.html