See Finding out what is in your event-handler's event_args
By default, the ‘sender’ is the object that invoked the handler. Thus, you could have any number of labels use the same handler function. The handler would get a reference to the invoking object (not its name!) as the value of parameter event_args['sender']
.
Of course, setting the handler for each label is anything but automatic. You either set it manually, in the IDE, or you write (more) code to do it. In what order the labels will be “shown”, may be hard to guess, and might not be stable, depending on what edits you make along the way.
So, be aware, the “show-handler” approach is likely to be much less “automatic”, and more code, than simply
self.widgets_by_position = [ self.lbl_main, self.lbl_c1, ... ]
self.widgets_by_name = { "main": self.lbl_main, "column1": self.lbl_c1, ... }