class Dialog(QDialog): def __init__(self, names, values, message='', title=''): assert len(names) == len(values) super(Dialog, self).__init__() if title: self.setWindowTitle(title) self.names = names self.values = values self.message_label = QLabel(message) self.buttons_layout = QVBoxLayout() self.button_group = QButtonGroup(self) for i, button_name in enumerate(self.names, start=1): button = QPushButton(button_name) self.button_group.addButton(button, i) self.buttons_layout.addWidget(button) self.layout = QVBoxLayout() self.layout.addWidget(self.message_label) self.layout.addLayout(self.buttons_layout) self.setLayout(self.layout) self.button_group.buttonClicked.connect(self.button_clicked_slot) def button_clicked_slot(self, button): self.done(self.button_group.id(button)) def get_button_name(self, button_id): return self.names[button_id - 1] def get_button_value(self, button_id): return self.values[button_id - 1]