Почему мои команды print () показывают двойные значения в консоли? - PullRequest
0 голосов
/ 29 августа 2018

Ниже приведен код, над которым я работаю, который печатает данные в окне CMD. Это не огромная проблема, которую я вижу вдвойне, я просто беспокоюсь, что рано или поздно она может превратиться в большую проблему, когда эта программа будет расти.

Это пример того, что CMD показывает мне, когда я щелкаю левой кнопкой мыши:

Left mouse pressed at (451, 279)
Left mouse pressed at (451, 279)
Left mouse released at (451, 279)
Left mouse released at (451, 279)

Я упустил много кода для краткости и точно определил его для этих классов и функций. Заранее извиняюсь - я очень новичок на этом сайте и на питоне.

class Button:       
    def whichButton(self):
        #this function takes the mousebuttondown event, and returns WHICh button is pressed
        if self.button == 1:
            return "Left"
        if self.button == 2:
            return "Middle"
        if self.button == 3:
            return "Right"
        if self.button == 4:
            return "Wheel Up"
        if self.button == 5:
            return "Wheel Down"     

    def handleEvent(self, event):

        if event.type == pygame.MOUSEBUTTONDOWN:
            print( Button.whichButton(event)+' mouse pressed at ' + str(event.pos))
            if self.rect.collidepoint(event.pos):
                self.buttonDown = True
                self.image = self.imageDown

class Game:
    self.all_sprites.add(self.startButton, self.quitButton)
    def run(self):
        while not self.done:
            self.frameRate = self.clock.tick(60) / 1000
            self.handleEvent()


    def handleEvent(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.done = True
            for button in self.all_sprites:
                button.handleEvent(event)




if __name__ == '__main__':
    pygame.init()
    Game(screen).run()
    pygame.quit()

1 Ответ

0 голосов
/ 31 августа 2018

Это происходит потому, что вы вызываете button.handle_event(event) для каждой кнопки в группе self.all_sprites в цикле for, поэтому вы печатаете print( Button.whichButton(event)+' mouse pressed at ' + str(event.pos)) для каждой кнопки.

def handle_events(self):
    for event in pg.event.get():
        if event.type == pg.QUIT:
            self.done = True
        # Iterates over all buttons in the group and calls their `handle_event` method.
        for button in self.all_sprites:
            button.handle_event(event)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...