Calculated attributes are calculated on the moment of retrieve. So if you change values after the retrieve that would influance this field it will not show because it will only be recalculated on a new retrieve or refresh of that object.
The on enter, on change or on leave speak for them selves. It will trigger something but unless you trigger a refresh of that object with the calculated field it will not change the calculated field. Even passing that object wihtout a refresh will still pass the old calculated value.
Does this help?
Evant handlers are triggers in microflows just like you can have triggers in a field on a form. So the on change in a form triggers a microflow and in the microflow I can trigger other microflows actions when I commit, delete or rollback something. To see the flow use breakpoints and step through your code to see everything in action. You will see that your on change action fires a microflow and that that microflow will trigger other microflows when a after commit handlers is set and you commit that object.