def setup_ui(self): main = QHBoxLayout() sub = QVBoxLayout() for i in range(10): sub.addWidget(QLabel(str(i))) main.addLayout(sub) self.setLayout(main)
def __init__(self, parent=None, collumns=None, **settings): """ Parameters ---------- collumns: list, optional List of lists of headers included in each collumn The list at index 0 will be the first collumn, etc. settings: kwargs Mapping of header to list of Setting objects """ self.settings = {} self.window = QDialog(parent=parent) self.window.setWindowTitle('Skywalker Settings') main_layout = QVBoxLayout() self.window.setLayout(main_layout) self.window.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) all_cols_layout = QHBoxLayout() main_layout.addLayout(all_cols_layout) if collumns is None: collumns = [list(settings.keys())] for col in collumns: col_layout = QVBoxLayout() all_cols_layout.addLayout(col_layout) for header in col: title = QLabel() title.setText(header.capitalize()) title.setAlignment(Qt.AlignCenter) col_layout.addWidget(title) form = QFormLayout() col_layout.addLayout(form) for setting in settings[header]: self.settings[setting.name] = setting label = QLabel() label.setText(setting.name.capitalize()) label.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) form.addRow(label, setting.layout) vertical_spacer = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Expanding) col_layout.addItem(vertical_spacer) confirm_layout = QHBoxLayout() main_layout.addLayout(confirm_layout) horizontal_spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) cancel_button = QPushButton('Cancel') cancel_button.pressed.connect(self.window.reject) apply_button = QPushButton('Apply') apply_button.pressed.connect(self.window.accept) confirm_layout.addItem(horizontal_spacer) confirm_layout.addWidget(cancel_button) confirm_layout.addWidget(apply_button)