def add_list_box(self, choicesL, name='isBell', init_val=3, layout=None, advance_n=True, fulldesc='Nozzle Geometry', connect_function=None, text_font=ARIAL_10, col=0, parent=None, fit_size_to_contents=True, width=1, height=1): # if parent is input, add widget to parent if parent is None: parent = self if layout is None: NRow = parent.get_next_row_number(advance_n) # Need to change next row number by length of choicesL #if advance_n: # for i in range(1, len(choicesL)): # parent.get_next_row_number(advance_n) self.selection_textD[name] = '' listWidget = QListWidget() for i,choice in enumerate( choicesL ): item = QListWidgetItem(choice) listWidget.addItem(item) if i == init_val: #item.setChecked(True) listWidget.setItemSelected( item, True ) self.selection_textD[name] = choice if fulldesc: vbox = QtGui.QVBoxLayout() lbl = QLabel(fulldesc, parent) lbl.setFont( text_font ) vbox.addWidget( lbl ) self.objectD['%s_listbox_label'%name] = lbl self.input_widget_by_nameD['%s_listbox_label'%name] = (lbl , 'label') vbox.addWidget( listWidget ) grid_child = QtGui.QWidget() grid_child.setLayout(vbox) vbox.addStretch(1) else: grid_child = listWidget if layout is None: if width==1 and height==1: parent.grid.addWidget(grid_child, NRow, col) else: parent.grid.addWidget(grid_child, NRow, col, height, width) #parent.grid.addWidget(grid_child, NRow, col, len(choicesL), 1) else: layout.addWidget( grid_child ) self.objectD['%s_list_box'%name] = listWidget self.input_widget_by_nameD[name] = (listWidget , 'list_box_list') listWidget.itemClicked.connect( lambda: self.list_box_changed( '%s_list_box'%name ) ) if fit_size_to_contents: listWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) listWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) listWidget.setFixedSize(listWidget.sizeHintForColumn(0) + 2 * listWidget.frameWidth(), listWidget.sizeHintForRow(0) * listWidget.count() + \ 2 * listWidget.frameWidth())