Had a similar boot up problem where a Ubuntu Raspberry Pi failed to start the python application from a systemctl script because the X display had not yet started.

Consider starting a script which loops on testing if the X display has started and only starts the actual python application after detecting an active X display.