A simple Pygame that has a square move and jump
Few areas to improve:


self.vel. When I first saw this field/variable I thought: "What is that?".I guess many other people may have the same first feeling.I would rename it to an explicit and clear name: self.velocity
self.isJump and self.jumpCount violate Python naming conventions (instance variable names should be all lower case, words in an instance variable name should be separated by an underscore). Therefore, rename them to:

...
self.is_jump
self.jump_count`

run = True flag. That flag for just controlling the while loop flow is redundant.We're just starting the loop with while True: and breaking it with break.So it becomes:

def run(self):
    while True:
        pygame.time.delay(30)                
        keys = pygame.key.get_pressed()

        # handling pressed keys
        if keys ...

        win.fill((0, 0, 0))
        self.draw()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                break
    pygame.quit()