Exemplo n.º 1
0
 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())