def _dialog_button_box_buttons_by_role( dialog: QtWidgets.QDialog, ) -> typing.Mapping[QtWidgets.QDialogButtonBox.ButtonRole, QtWidgets.QAbstractButton]: """Create a mapping from button roles to their corresponding buttons.""" hits = dialog.findChildren(QtWidgets.QDialogButtonBox) if len(hits) == 0: return {} [button_box] = hits return {button_box.buttonRole(button): button for button in button_box.buttons()}