Transparent Window in Pygame or Python

2019-04-02 23:54发布

问题:

Im trying to make a transparent window for a splash screen for my game. The image has transparency but I cant make the window transparent(like see screen, desktop, etc.. behind it) All I've found is a no-go with pygame. Is there any external libraries that I could pull from to make this possible? BTW. This is entirely a Linux project. So os specific are ok too.

#Splash Screen
screen = pygame.display.set_mode((680,300), NOFRAME)
splashbg = pygame.image.load("Images/SplashBG.png")
font = pygame.font.Font(None, 36)

pygame.mixer.music.load("OriginalEnd.mp3")
pygame.mixer.music.play(-1)

screen.blit(splashbg,(0,0))
loadingtext = font.render("Loading...", 1, (255,255,255))
screen.blit(loadingtext, (200,250))
pygame.display.flip()
pygame.time.delay(4000)

回答1:

You could always ghetto version it with pretend transparency. It's not an ideal solution by any means, but it may work..

Before you launch your screen, use PIL to take a snapshot of the desktop, blit that first, and then draw your transparent image over it. That way it'll at least give the illusion of transparency.

Something kind of like:

import ImageGrab, Image 

im = Imagegrab.grab()
im.save('faux_trans.png','png')

for_trans = pygame.image.load('faux_trans.png').convert()

splash = pygame.image.load.... 

screen.blit(for_trans, (0,0))

# and so on. 

Like I said, not the greatest solution, but if you launch your game NOFRAME, or FULLSCREEN, you may be able to get away with it! :)