I don't think you can have a image with both alpha and color key. Your code should be:
rect = pygame.Rect(rectangle) image = pygame.Surface(rect.size, pygame.SRCALPHA) image.fill((0,0,0,0)) image.blit(self.sheet, (0, 0), rect) return image
what this code does is first give the image a alpha channel by using the flag SRCALPHA. Then you are making sure it is fully transparent, since its black by default, and then write your image over it like you normally would.
The main important part is to decide whether you want to use the extra processing power and memory to use alpha mapped images, or just use color keys, that look worse. You are trying to do both, which doesn't really work.
I found the file you based this on on the pygame wiki. The only thing you changed was the convert_alpha. Now your sprite sheet has a alpha channel, but not your sprites. To get sprites with alpha, use SRCALPHA