ideally, in the player controller, instead of “Event Begin Play”, you would use “Event Received Player”, before spawning widgets, because that is when a player controller gets a viewport. but this function is not exposed to blueprints for some reason, so you can use event begin play, with a small delay, like .1 seconds, before adding any widgets to the player screen.
or maybe try OnPostLogin from the GameMode, to tell the player controller to create the widget.