That said the devil is in the detail.
When one of the buttons is pressed how quickly does it need to display on the others – seconds, minutes?
Will there need to be any feedback as to whether or not the other units have received the instruction?
One thought – set up a web page and use the ‘sending unit’ to update the page. The ‘receiver units’ could submit ‘Get’ requests at time intervals to update themselves as to the symbols they should display. They could also provide feedback to the ‘sending unit’ to show that the ‘receiver units’ status. i.e. had updated and are displaying the symbol. Most of which has been done and is available on this forum or the web.
This has a few advantages – if power or access to the internet is not available, the message from the ‘sending’ unit can be picked up some time later by the ‘other’ units.
So in my head (which is not always a good place to be):
The ‘sender’ could press their button – the web page updates – on the ‘senders’ unit the ‘other’ units symbols remain unlit.
The ‘other’ units submit ‘Get’ requests to the web page & update themselves – the ‘other’ unit displays the ‘senders’ symbol.
The ‘other’ unit updates the web page to the effect that it has received the instruction – when the ‘sender’ unit next submits a ‘Get’ request to update its self, it is informed that the ‘other’ unit received the instruction – the ‘sender’ unit now displays the ‘other’ units symbol to confirm that the instruction was received.
You could follow on further – the ‘other’ unit could use a button press to confirm that the displayed symbol had been seen – this could be seen on the ‘senders’ unit as a flashing symbol.
You would end up with feedback on the ‘sending’ unit – instruction not received (no symbol displayed) – instruction received (solid symbol displayed) – instruction acknowledged (flashing symbol displayed) – or any variation.
As for building:
Electronics,
Parts easily available – probably too late to order from China now in time for Christmas, so you will have to pay some premium to source locally.
Not that technical to assemble if you have some basics.
MCP23017 – there are various alternatives – this is a good choice though - Martin apart from being very knowledgeable about this component and can save you hours, is a member who goes out of his way to help other people with their projects and problems.
Code,
All the parts have been done before in some shape or form and code is available – this forum has many very knowledgeable members who regularly assist others with their projects.
Finally:
Can it be done – Yes.
Should it be done – you don’t state whether or not you have hair and whether you’re prepared to risk it over this project.