Функция кнопки в Python с не работающим self.clicked - PullRequest
0 голосов
/ 27 августа 2018

Однако при написании функции кнопки self.clicked не сохраняет свое значение после MOUSEBUTTONUP, есть ли лучший способ или способ сохранить значение self.clicked?

код:

def check_clicked(self,event):
    if event.type == pg.MOUSEBUTTONDOWN and event.button == 1:
            if self.rect.collidepoint(event.pos):
                self.clicked = True
    elif event.type == pg.MOUSEBUTTONUP:
            if self.clicked == True:
                return True
            else:
                return False

Ответы [ 2 ]

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

Пара баллов - вы можете проверить точку коллизии даже для события UP, чтобы убедиться, что пользователь намеревался щелкнуть мышью или передумал.Во-вторых, вы можете использовать переменную «self.down» для отслеживания нажатия кнопки и устанавливать «clicked» только после просмотра события UP.

def check_clicked(self,event):
    if event.type == pg.MOUSEBUTTONDOWN and event.button == 1:
            self.clicked = False
            self.down = False
            if self.rect.collidepoint(event.pos):
                self.down = True
    elif event.type == pg.MOUSEBUTTONUP:
            if self.down and self.rect.collidepoint(event.pos):
                self.clicked = True
            else:
                self.clicked = False
            self.down = False

    return self.clicked
0 голосов
/ 27 августа 2018

Ваш отступ отключен, хотя это должно привести к ошибке;

def check_clicked(self,event):
if event.type == pg.MOUSEBUTTONDOWN and event.button == 1:
        if self.rect.collidepoint(event.pos):
            self.clicked = True
elif event.type == pg.MOUSEBUTTONUP: #<<<<< Change indentation here
        if self.clicked == True:
            return True
        else:
            return False

Предполагая, что ваш отступ правильный, я считаю, что проблема в том, что вы на самом деле не определяете self.clicked, просто проверяете, что это правдаof not.

Попробуйте выполнить следующее:

elif event.type == pg.MOUSEBUTTONUP:
    self.clicked = True
    if self.clicked == True:
        return True
    else:
        return False

Несмотря на то, что избыточно проверять, является ли self.clicked истинным, перед его определением.Просто используйте;

def check_clicked(self,event):
if event.type == pg.MOUSEBUTTONDOWN and event.button == 1:
        if self.rect.collidepoint(event.pos):
            self.clicked = True
elif event.type == pg.MOUSEBUTTONUP:
        self.clicked = True
        return True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...