'QGridLayout {background-color: khaki; color: lightcyan}') widget.setStyleSheet('QPushButton {background-color: khaki;}') panes = QGridLayout(widget) p, q, s, t, u, w = 40, 10, -30, -100, 40, -20 aarm = ArmParams(p, q, s, t, u, w) # Make pushbuttons PBNames = CallData.buttonLabels() wib, hib, mb = 110, 60, 15 for k, txt in enumerate(PBNames): bu = QPushButton(txt) panes.addWidget(bu, 0, k) # Button in row 0, column k bu.clicked.connect(CallData.makeClickFunc(bu, k)) if txt == 'AutoProd': CallData.on_buttonClick(bu, k) # Toggle AutoProd on widget.armParam = aarm # Produce needs a link to aarm spinsets = [ # Range; Initial Value; VarName; and Legend for each spinbox [0, 999, p, 'p', 'Center 1 (bigger=lower)'], [-999, 0, s, 's', 'Circle 1 neg. thickness above origin'], [-999, 0, t, 't', 'Center 2 (bigger neg.=higher)'], [0, 999, q, 'q', 'Circle 2 thickness below origin'], [0, 999, u, 'u', 'Right-end distance from origin'], [-999, 0, w, 'w', 'Left-end neg. distance from origin'], ] ro = 2 for sn, sset in enumerate(spinsets): rlo, rhi, rini, varn, legend = sset sb = QSpinBox() sb.valueChanged.connect(CallData.makeSpinBoxFunc(widget, sb, sn)) sb.setRange(rlo, rhi)