Você pode adicionar isto para capturar sinais SIGTERM, SIGINT e SIGKILL.
import signal
signal.signal(signal.SIGINT, sigterm_handler)
signal.signal(signal.SIGTERM, sigterm_handler)
signal.signal(signal.SIGKILL, sigterm_handler)
Você precisa do SIGTERM para desligar. Lembre-se: pressionar os botões significa que o sistema iniciará um desligamento, portanto, há uma quantidade limitada de tempo antes que qualquer coisa que você queira fazer seja feita.