2011-09-09 61 views
2

私はちょうどPythonを学んでいます。私は友人から私に示唆された基本的な課題の1つとして、目覚まし時計に取り組んでいます。あらかじめ決められた時間に.wavの音を鳴らす目覚まし時計を作りました。今はGUIのためにPygameを使用していますが、アラーム時間を調整するためにボタンを設定するまでは、すべてうまくいきました。アラーム時刻と時計時刻を比較するときは、時計の時刻が文字列形式なので、アラーム時刻も同じにする必要があります。しかし、ボタンは文字列から+または - できないので、私はちょっと固まっています。私はそれを文字列に変換する方法を試しましたが、これまでのところすべてがうまくいかなかったのです。誰かがここに示唆を持っているかどうか疑問に思います。Pythonの時計時刻に合わせてアラーム時間を調整します

#!/usr/bin/python 
import os.path, sys, datetime, time 
import os, sys, math 
import pygame, random 
from pygame.locals import * 

main_dir = os.path.split(os.path.abspath(__file__))[0] 
data_dir = os.path.join(main_dir, 'data') 
currenttime = datetime.datetime.now() 
clocktime = currenttime.strftime("%H:%M") 
alarmtime = "13:23" 
pygame.init() 

#Screen and background 
width, height = 600, 600 
screen = pygame.display.set_mode((width, height)) 
pygame.display.set_caption("Alarm Clock") 
background = pygame.image.load(os.path.join(data_dir, 'diamondplate.jpg')) 
background = pygame.transform.scale(background, (width, height)) 

#Current time 
font = pygame.font.Font(None, 250) 
text = font.render("%s" % clocktime, True, (255,140,0), (0,0,0)) 
textRect = text.get_rect() 
textRect.centerx = screen.get_rect().centerx 
textRect.centery = screen.get_rect().centery - 200 

#Alarm time 
text2 = font.render("%s" % '00:00', True, (255,140,0), (0,0,0)) 
text2Rect = text2.get_rect() 
text2Rect.centerx = screen.get_rect().centerx 
text2Rect.centery = screen.get_rect().centery + 200 

#Alarm noise 
def alarmsound(file_path=os.path.join(main_dir, 'data', 'boom.wav')): 
    pygame.mixer.init(11025) 
    sound = pygame.mixer.Sound(file_path) 
    channel = sound.play() 
    pygame.time.wait(1000) 

#Image load function 
def load_image(file): 
    file = os.path.join(data_dir, file) 
    surface = pygame.image.load(file) 
    return surface.convert_alpha() 

#Hour arrow up 
class Hourup(pygame.sprite.Sprite): 

    def __init__(self): 
     pygame.sprite.Sprite.__init__(self,self.groups) 
     image = load_image('arrowup.png') 
     image = pygame.transform.scale(image, (85,85)) 
     self.image = image 
     self.rect = self.image.get_rect() 
     surface = pygame.display.get_surface() 
     self.area = surface.get_rect() 
     self.rect.bottomleft = text2Rect.topleft 

    def click_check(self,eventpos): 
     if self.rect.collidepoint(eventpos): 
      pass 

    def update(self): 
     pass 

#Hour arrow down 
class Hourdown(pygame.sprite.Sprite): 

    def __init__(self): 
     pygame.sprite.Sprite.__init__(self,self.groups) 
     image = load_image('arrowdown.png') 
     image = pygame.transform.scale(image, (85,85)) 
     self.image = image 
     self.rect = self.image.get_rect() 
     surface = pygame.display.get_surface() 
     self.area = surface.get_rect() 
     self.rect.bottom = text2Rect.top 
     self.rect.left = 159 

    def click_check(self,eventpos): 
     if self.rect.collidepoint(eventpos): 
      pass  

    def update(self): 
     pass 

#Minute arrow up 
class Minuteup(pygame.sprite.Sprite): 

    def __init__(self): 
     pygame.sprite.Sprite.__init__(self,self.groups) 
     image = load_image('arrowup.png') 
     image = pygame.transform.scale(image, (85,85)) 
     self.image = image 
     self.rect = self.image.get_rect() 
     surface = pygame.display.get_surface() 
     self.area = surface.get_rect() 
     self.rect.bottomright = (442,414) 

    def click_check(self,eventpos): 
     if self.rect.collidepoint(eventpos): 
      pass 

    def update(self): 
     pass 

#Minute arrow down 
class Minutedown(pygame.sprite.Sprite): 

    def __init__(self): 
     pygame.sprite.Sprite.__init__(self,self.groups) 
     image = load_image('arrowdown.png') 
     image = pygame.transform.scale(image, (85,85)) 
     self.image = image 
     self.rect = self.image.get_rect() 
     surface = pygame.display.get_surface() 
     self.area = surface.get_rect() 
     self.rect.bottomright = text2Rect.topright 

    def click_check(self,eventpos): 
     if self.rect.collidepoint(eventpos): 
      pass 

    def update(self): 
     pass 


#Groups 
allsprites = pygame.sprite.Group() 
Hourup.groups = allsprites 
Hourdown.groups = allsprites 
Minutedown.groups = allsprites 
Minuteup.groups = allsprites 
hourup = Hourup() 
hourdown = Hourdown() 
minutedown = Minutedown() 
minuteup = Minuteup() 
clickableobjects = [hourup, hourdown, minutedown, minuteup] 

def main(): 
    while 1: 
     currenttime = datetime.datetime.now() 
     clocktime = currenttime.strftime("%H:%M") 
     screen.blit(background,(0,0)) 
     text = font.render("%s" % clocktime, True, (255,140,0), (0,0,0)) 
     text2 = font.render("%s" % alarmtime, True, (255,140,0), (0,0,0)) 
     screen.blit(text,textRect) 
     screen.blit(text2,text2Rect) 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): 
       sys.exit() 
      if event.type == MOUSEBUTTONDOWN: 
       if event.button == 1: 
        for object in clickableobjects: 
         object.click_check(event.pos) 

     if clocktime == alarmtime and soundcheck = False: 
      alarmsound() 
      soundcheck = True 
     allsprites.draw(screen) 
     allsprites.update() 
     pygame.display.update() 
     pygame.display.flip 

if __name__ == '__main__': 
    main() 

答えて

1

あなたはstrptime()を探している日時インスタンスに文字列を変換します:

は、ここでは、コードです。

hereを正しく使用する方法を参照してください。

日時インスタンスを2つ比較すると、約というタイムデータインスタンスが表示されます。基本的には、2つの時間の差を最も近いミリ秒にします。

datetime、time、およびcalendarモジュールに関するすべてのことを学びます。一度あなたはPythonで時間と日付を扱うそれらを学ぶのは本当に簡単になります。

関連する問題