2012-06-16 86 views
0

我想要一個按鈕打印支票並運行我的鉛筆功能。此刻,如果我將鼠標懸停在Box Sprite上,它將運行打印和鉛筆功能。它應該是ONCLICK它運行那些2.任何人都可以幫我嗎?謝謝! (這應該是所有相關的代碼,如果你需要更多信息,請讓我知道:)pygame按鈕不會在按下/只在懸停時工作

class Box(pygame.sprite.Sprite): 
def __init__(self): 
    pygame.sprite.Sprite.__init__(self) 
    self.image = pygame.Surface((35, 30)) 
    self.image = self.image.convert() 
    self.image.fill((255, 0, 0)) 
    self.rect = self.image.get_rect() 
    self.rect.centerx = 25 
    self.rect.centery = 505 
    self.dx = 10 
    self.dy = 10 

while keepGoing: 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      keepGoing = False 
     box = Box() 
     allSprites = pygame.sprite.Group(box) 
     allSprites.draw(screen) 

     if event.type == MOUSEMOTION: 
      x,y = event.pos 
      if box.rect.collidepoint(x,y) and pygame.MOUSEBUTTONUP:      
       print("collide works") 
       pencil(background,clock,keepGoing,screen) 
     pygame.display.flip() 

回答

4

您的代碼不檢查鼠標的點擊,而鼠標移動。

如果你想被測試爲你的箱子點擊,改變條件檢查MOUSEBUTTONDOWNMOUSEBUTTONUP事件(這取決於你想反應是什麼的點擊一部分),而不是MOUSEMOTION事件。

雖然您的代碼還存在其他一些問題。例如,你在每個事件之後創建你的Box和Group。在進入遊戲循環之前,可能你只想創建一次它們(這樣做會更有意義並且性能更好)。

+0

嘆息...謝謝。我現在感覺非常愚蠢。所有的例子/教程等我見過..讓你看起來像你檢查鼠標的動作..然後檢查發生的鼠標事件(即mousedown)。再次感謝。 – user1449653