def generateButtons(self, parent=None): """ Generate buttons due to colorDic """ self.colorButtons = [] for color in self.colorList: button = QPushButton(parent) button.setObjectName(color[0]) button.setStyleSheet('QPushButton { background-color: %s; }' % color[1]) button.setFixedSize(self.iconWidth / 2, self.iconHeight / 2) button.setCheckable(True) self.colorButtons.append(button)
class Template(base.BaseWidget): templateChecked = Signal(object) def __init__(self, parent=None): super(Template, self).__init__(parent=parent) def ui(self): super(Template, self).ui() self.setMaximumWidth(160) self.setMaximumHeight(200) widget_layout = layouts.VerticalLayout(spacing=0, margins=(2, 2, 2, 2)) main_frame = QFrame() main_frame.setFrameStyle(QFrame.StyledPanel | QFrame.Raised) main_frame.setLineWidth(1) main_frame.setLayout(widget_layout) self.main_layout.addWidget(main_frame) self.template_btn = QPushButton('', self) self.template_btn.setCheckable(True) self.template_btn.setIcon(self.get_icon()) self.template_btn.setIconSize(QSize(120, 120)) template_lbl = label.BaseLabel(self.name, parent=self) template_lbl.setObjectName('templateLabel') template_lbl.setAlignment(Qt.AlignCenter) widget_layout.addWidget(self.template_btn) widget_layout.addWidget(template_lbl) def setup_signals(self): self.template_btn.toggled.connect(self._on_selected_template) def get_icon(self): return resources.icon(name='project', extension='png') def _on_selected_template(self, template): self.templateChecked.emit(self)
def create_flat_button( icon=None, icon_size=None, name='', text=200, background_color=[54, 51, 51], ui_color=68, border_color=180, push_col=120, checkable=True, w_max=None, w_min=None, h_max=None, h_min=None, policy=None, tip=None, flat=True, hover=True, destroy_flag=False, context=None, ): btn = QPushButton() btn.setText(name) btn.setCheckable(checkable) if icon: if isinstance(icon, QIcon): btn.setIcon(icon) else: btn.setIcon(QIcon(icon)) btn.setFlat(flat) if flat: change_button_color(button=btn, text_color=text, bg_color=ui_color, hi_color=background_color, mode='button', hover=hover, destroy=destroy_flag, ds_color=border_color) btn.toggled.connect( lambda: change_button_color(button=btn, text_color=text, bg_color=ui_color, hi_color=background_color, mode='button', toggle=True, hover=hover, destroy=destroy_flag, ds_color=border_color)) else: change_button_color(button=btn, text_color=text, bg_color=background_color, hi_color=push_col, mode='button', hover=hover, destroy=destroy_flag, ds_color=border_color) if w_max: btn.setMaximumWidth(w_max) if w_min: btn.setMinimumWidth(w_min) if h_max: btn.setMaximumHeight(h_max) if h_min: btn.setMinimumHeight(h_min) if icon_size: btn.setIconSize(QSize(*icon_size)) if policy: btn.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) if tip: btn.setToolTip(tip) if context: btn.setContextMenuPolicy(Qt.CustomContextMenu) btn.customContextMenuRequested.connect(context) return btn
class MyToolBar(QWidget): """ ToolBar widget """ # signal trigger = Signal(int) def __init__(self, flags, parent=None): super(MyToolBar, self).__init__(parent) self.setWindowFlags(Qt.ToolTip) self.paddingX = 5 self.paddingY = 2 self.iconWidth = self.iconHeight = 28 self.setFixedHeight(self.iconHeight + 2 * self.paddingY) # self.setFixedWidth(300) self.rectButton = None self.ellipseButton = None self.arrowButton = None self.lineButton = None self.freePenButton = None self.textButton = None self.undoButton = None self.cancelButton = None self.okButton = None self.saveButton = None self.button_list = [] self.initWindow(flags) def initDrawButtons(self, flags): self.drawButtonGroup = QButtonGroup(self) # draw action buttons if flags & constant.RECT: self.rectButton = QPushButton(self) self.rectButton.setIcon(QIcon(":/resource/icon/rect.png")) self.rectButton.setFixedSize(self.iconWidth, self.iconHeight) self.rectButton.setCheckable(True) self.drawButtonGroup.addButton(self.rectButton) self.hlayout.addWidget(self.rectButton) self.button_list.append(self.rectButton) if flags & constant.ELLIPSE: self.ellipseButton = QPushButton(self) self.ellipseButton.setIcon(QIcon(":/resource/icon/ellipse.png")) self.ellipseButton.setFixedSize(self.iconWidth, self.iconHeight) self.ellipseButton.setCheckable(True) self.drawButtonGroup.addButton(self.ellipseButton) self.hlayout.addWidget(self.ellipseButton) self.button_list.append(self.ellipseButton) if flags & constant.ARROW: self.arrowButton = QPushButton(self) self.arrowButton.setIcon(QIcon(":/resource/icon/arrow.png")) self.arrowButton.setFixedSize(self.iconWidth, self.iconHeight) self.arrowButton.setCheckable(True) self.drawButtonGroup.addButton(self.arrowButton) self.hlayout.addWidget(self.arrowButton) self.button_list.append(self.arrowButton) if flags & constant.LINE: self.lineButton = QPushButton(self) self.lineButton.setIcon(QIcon(":/resource/icon/line.png")) self.lineButton.setFixedSize(self.iconWidth, self.iconHeight) self.lineButton.setCheckable(True) self.drawButtonGroup.addButton(self.lineButton) self.hlayout.addWidget(self.lineButton) self.button_list.append(self.lineButton) if flags & constant.FREEPEN: self.freePenButton = QPushButton(self) self.freePenButton.setIcon(QIcon(":/resource/icon/pen.png")) self.freePenButton.setFixedSize(self.iconWidth, self.iconHeight) self.freePenButton.setCheckable(True) self.drawButtonGroup.addButton(self.freePenButton) self.hlayout.addWidget(self.freePenButton) self.button_list.append(self.freePenButton) if flags & constant.TEXT: self.textButton = QPushButton(self) self.textButton.setIcon(QIcon(":/resource/icon/text.png")) self.textButton.setFixedSize(self.iconWidth, self.iconHeight) self.textButton.setCheckable(True) self.drawButtonGroup.addButton(self.textButton) self.hlayout.addWidget(self.textButton) self.button_list.append(self.textButton) self.drawButtonGroup.buttonClicked.connect(self.buttonToggled) def initOtherButtons(self, flags): # other action buttons if len(self.button_list) != 0: self.separator1 = QFrame(self) self.separator1.setFrameShape(QFrame.VLine) self.separator1.setFrameShadow(QFrame.Sunken) self.hlayout.addWidget(self.separator1) self.undoButton = QPushButton(self) self.undoButton.setIcon(QIcon(":/resource/icon/undo.png")) self.undoButton.setFixedSize(self.iconWidth, self.iconWidth) self.undoButton.clicked.connect(self.otherButtonsClicked) self.hlayout.addWidget(self.undoButton) if flags & constant.SAVE_TO_FILE: self.saveButton = QPushButton(self) self.saveButton.setIcon(QIcon(":/resource/icon/save.png")) self.saveButton.setFixedSize(self.iconWidth, self.iconHeight) self.saveButton.clicked.connect(self.otherButtonsClicked) self.hlayout.addWidget(self.saveButton) self.separator2 = QFrame(self) self.separator2.setFrameShape(QFrame.VLine) self.separator2.setFrameShadow(QFrame.Sunken) self.hlayout.addWidget(self.separator2) self.cancelButton = QPushButton(self) self.cancelButton.setIcon(QIcon(":/resource/icon/close.png")) self.cancelButton.setFixedSize(self.iconWidth, self.iconHeight) self.cancelButton.clicked.connect(self.otherButtonsClicked) if flags & constant.CLIPBOARD: self.okButton = QPushButton(self) self.okButton.setIcon(QIcon(":/resource/icon/check.png")) self.okButton.setFixedSize(self.iconWidth, self.iconHeight) self.okButton.clicked.connect(self.otherButtonsClicked) self.hlayout.addWidget(self.okButton) self.hlayout.addWidget(self.cancelButton) def initWindow(self, flags): self.hlayout = QHBoxLayout() self.hlayout.setSpacing(2) self.hlayout.setContentsMargins(10, 2, 10, 2) self.setLayout(self.hlayout) self.initDrawButtons(flags) self.initOtherButtons(flags) # slots def buttonToggled(self, button): """ :type button: QPushButton :param button: :return: """ if button == self.rectButton: self.trigger.emit(ACTION_RECT) elif button == self.ellipseButton: self.trigger.emit(ACTION_ELLIPSE) elif button == self.arrowButton: self.trigger.emit(ACTION_ARROW) elif button == self.lineButton: self.trigger.emit(ACTION_LINE) elif button == self.freePenButton: self.trigger.emit(ACTION_FREEPEN) elif button == self.textButton: self.trigger.emit(ACTION_TEXT) else: pass def otherButtonsClicked(self): if self.sender() == self.undoButton: self.trigger.emit(ACTION_UNDO) elif self.sender() == self.cancelButton: self.trigger.emit(ACTION_CANCEL) elif self.sender() == self.okButton: self.trigger.emit(ACTION_SURE) elif self.sender() == self.saveButton: self.trigger.emit(ACTION_SAVE)
def _build_ui(self): layout = QGridLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.tree = QTreeWidget() self.tree.setSelectionMode(QTreeWidget.ExtendedSelection) self.tree.setHeaderLabels([ "name", "status", "server", "prioritize", "kill", "delete", "browse" ]) self.tree.setUniformRowHeights(True) self.tree.setColumnWidth(0, 150) layout.addWidget(self.tree, 0, 0, 6, 1, Qt.AlignTop) row = 0 pause_button = QPushButton( "pause new jobs" if not self.session.seqcrow_job_manager.paused else "resume jobs") pause_button.setCheckable(True) pause_button.clicked.connect(lambda check: pause_button.setText( "pause new jobs" if not check else "resume jobs")) pause_button.setChecked(self.session.seqcrow_job_manager.paused) pause_button.clicked.connect(self.pause_queue) layout.addWidget(pause_button, row, 1, 1, 1, Qt.AlignTop) row += 1 open_button = QPushButton("open structure") open_button.clicked.connect(self.open_jobs) layout.addWidget(open_button, row, 1, 1, 1, Qt.AlignTop) row += 1 log_button = QPushButton("log") log_button.clicked.connect(self.open_log) layout.addWidget(log_button, row, 1, 1, 1, Qt.AlignTop) row += 1 output_button = QPushButton("raw output") output_button.clicked.connect(self.open_output) layout.addWidget(output_button, row, 1, 1, 1, Qt.AlignTop) row += 1 refresh_button = QToolButton() refresh_button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding) refresh_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) refresh_button.setIcon( QIcon(refresh_button.style().standardIcon( QStyle.SP_BrowserReload))) refresh_button.setText('check jobs') refresh_button.clicked.connect( lambda *args: self.session.seqcrow_job_manager.triggers. activate_trigger(JOB_QUEUED, "refresh")) layout.addWidget(refresh_button, row, 1, 1, 1, Qt.AlignTop) row += 1 for i in range(0, row - 1): layout.setRowStretch(i, 0) layout.setRowStretch(row - 1, 1) layout.setColumnStretch(0, 1) layout.setColumnStretch(1, 0) self.tool_window.ui_area.setLayout(layout) self.tool_window.manage(None)
class PenSetWidget(QWidget): penSizeTrigger = Signal(int) penColorTrigger = Signal(str) fontChangeTrigger = Signal(QFont) def __init__(self, parent=None): super(PenSetWidget, self).__init__(parent) self.paddingX = 5 self.paddingY = 2 self.iconWidth = self.iconHeight = 24 self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) self.setWindowFlags(Qt.ToolTip) self.initWindows() self.prevSizeButton = self.penSize1 self.penSize1.setChecked(True) self.presentColor.setStyleSheet( 'QPushButton { background-color: %s; }' % PENCOLOR) def generateButtons(self, parent=None): """ Generate buttons due to colorDic """ self.colorButtons = [] for color in self.colorList: button = QPushButton(parent) button.setObjectName(color[0]) button.setStyleSheet('QPushButton { background-color: %s; }' % color[1]) button.setFixedSize(self.iconWidth / 2, self.iconHeight / 2) button.setCheckable(True) self.colorButtons.append(button) def initWindows(self): self.mainLayout = QHBoxLayout() self.setLayout(self.mainLayout) self.mainLayout.setSpacing(0) self.mainLayout.setContentsMargins(5, 2, 5, 2) self.initPenSizeButtons() self.initFontWidget() self.initPenColorButtons() self.separator = QFrame(self) self.separator.setFrameShape(QFrame.VLine) self.separator.setFrameShadow(QFrame.Sunken) self.mainLayout.addWidget(self.penSize) self.mainLayout.addWidget(self.changeFontButton) self.mainLayout.addWidget(self.separator) self.mainLayout.addWidget(self.colorSet) def initPenSizeButtons(self): self.penSize = QWidget(self) self.penSizeLayout = QHBoxLayout() self.penSize.setLayout(self.penSizeLayout) # adjust pen size self.penSize1 = QPushButton(self.penSize) self.penSize1.setIcon(QIcon(":/resource/icon/pensize1.png")) self.penSize1.setObjectName('1') self.penSize1.setFixedSize(self.iconWidth, self.iconHeight) self.penSize1.setCheckable(True) self.penSize2 = QPushButton(self.penSize) self.penSize2.setIcon(QIcon(":/resource/icon/pensize2.png")) self.penSize2.setObjectName('2') self.penSize2.setFixedSize(self.iconWidth, self.iconHeight) self.penSize2.setCheckable(True) self.penSize3 = QPushButton(self.penSize) self.penSize3.setIcon(QIcon(":/resource/icon/pensize3.png")) self.penSize3.setObjectName('3') self.penSize3.setFixedSize(self.iconWidth, self.iconHeight) self.penSize3.setCheckable(True) self.sizeButtonGroup = QButtonGroup(self.penSize) self.sizeButtonGroup.addButton(self.penSize1) self.sizeButtonGroup.addButton(self.penSize2) self.sizeButtonGroup.addButton(self.penSize3) self.sizeButtonGroup.buttonClicked.connect(self.sizeButtonToggled) self.penSizeLayout.addWidget(self.penSize1) self.penSizeLayout.addWidget(self.penSize2) self.penSizeLayout.addWidget(self.penSize3) self.penSizeLayout.setSpacing(5) self.penSizeLayout.setContentsMargins(0, 0, 0, 0) def initPenColorButtons(self): self.colorSet = QWidget(self) self.colorLayout = QHBoxLayout() self.colorLayout.setSpacing(5) self.colorLayout.setContentsMargins(5, 0, 5, 0) self.colorSet.setLayout(self.colorLayout) self.presentColor = QPushButton(self.colorSet) self.presentColor.setFixedSize(self.iconWidth, self.iconHeight) self.presentColor.setEnabled(False) # adjust pen color self.colorPick = QWidget(self.colorSet) self.colorGrid = QGridLayout() self.colorGrid.setSpacing(0) self.colorGrid.setContentsMargins(5, 0, 5, 0) self.colorPick.setLayout(self.colorGrid) self.colorList = [('white', '#ffffff'), ('red', '#ff0000'), ('green', '#00ff00'), ('blue', '#0000ff'), ('cyan', '#00ffff'), ('magenta', '#ff00ff'), ('yellow', '#ffff00'), ('gray', '#a0a0a4'), ('black', '#000000'), ('darkRed', '#800000'), ('darkGreen', '#008000'), ('darkBlue', '#000080'), ('darkCyan', '#008080'), ('darkMagenta', '#800080'), ('darkYellow', '#808000'), ('darkGray', '#808080')] self.generateButtons() self.colorButtonGroup = QButtonGroup(self) for button in self.colorButtons: self.colorButtonGroup.addButton(button) self.colorButtonGroup.buttonClicked.connect(self.colorButtonToggled) # set the layout tmp = 0 for x in range(0, 2): for y in range(0, int(len(self.colorList) / 2)): self.colorGrid.addWidget(self.colorButtons[tmp], x, y) tmp += 1 self.colorGrid.setSpacing(0) self.colorGrid.setContentsMargins(0, 0, 0, 0) self.colorLayout.addWidget(self.presentColor) self.colorLayout.addWidget(self.colorPick) def initFontWidget(self): self.fontDialog = QFontDialog() self.changeFontButton = QPushButton(self) self.fontDialog.setCurrentFont(QFont('Sans serif')) self.changeFontButton.setText('{0} {1}'.format( self.fontDialog.currentFont().family(), self.fontDialog.currentFont().pointSize())) self.changeFontButton.clicked.connect(self.fontButtonClicked) def showFontWidget(self): self.changeFontButton.show() self.penSize1.hide() self.penSize2.hide() self.penSize3.hide() def showPenWidget(self): self.changeFontButton.hide() self.penSize1.show() self.penSize2.show() self.penSize3.show() # slots def colorButtonToggled(self, button): self.presentColor.setStyleSheet( 'QPushButton { background-color: %s; }' % button.objectName()) self.penColorTrigger.emit(button.objectName()) def sizeButtonToggled(self, button): self.penSizeTrigger.emit(int(button.objectName()) * 2) def fontButtonClicked(self): ok = True font = QFontDialog.getFont(self) if font[1]: self.changeFontButton.setText('{0} {1}'.format( font[0].family(), font[0].pointSize())) self.fontChangeTrigger.emit(font[0])
def __init__(self, *args, initial_elements=[], select_multiple=True, **kwargs): super().__init__(*args, **kwargs) layout = QGridLayout(self) layout.setContentsMargins(0, 0, 0, 0) self._elements = {ele: ElementButton(ele) for ele in ELEMENTS if not any(ele == x for x in ['Bq', 'X'])} for ele in self._elements.keys(): self._elements[ele].setTristate(False) if select_multiple: self._elements[ele].stateChanged.connect(lambda state, ele=ele: self.elementSelectionChanged.emit()) else: self._elements[ele].stateChanged.connect(lambda state, ele=ele: self._single_ele_clicked(state, ele)) elements_widget = QWidget() elements_layout = QGridLayout(elements_widget) elements_layout.setContentsMargins(0, 0, 0, 0) elements_layout.addWidget(self._elements['H'], 0, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['He'], 0, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Li'], 1, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Be'], 1, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['B'], 1, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['C'], 1, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['N'], 1, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['O'], 1, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['F'], 1, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ne'], 1, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Na'], 2, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Mg'], 2, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Al'], 2, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Si'], 2, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['P'], 2, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['S'], 2, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cl'], 2, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ar'], 2, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['K'], 3, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ca'], 3, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sc'], 3, 2, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ti'], 3, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['V'], 3, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cr'], 3, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Mn'], 3, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Fe'], 3, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Co'], 3, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ni'], 3, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cu'], 3, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Zn'], 3, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ga'], 3, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ge'], 3, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['As'], 3, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Se'], 3, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Br'], 3, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Kr'], 3, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Rb'], 4, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sr'], 4, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Y'], 4, 2, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Zr'], 4, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Nb'], 4, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Mo'], 4, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Tc'], 4, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ru'], 4, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Rh'], 4, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pd'], 4, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ag'], 4, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cd'], 4, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['In'], 4, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sn'], 4, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sb'], 4, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Te'], 4, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['I'], 4, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Xe'], 4, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cs'], 5, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ba'], 5, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Hf'], 5, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ta'], 5, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['W'], 5, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Re'], 5, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Os'], 5, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ir'], 5, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pt'], 5, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Au'], 5, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Hg'], 5, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Tl'], 5, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pb'], 5, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Bi'], 5, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Po'], 5, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['At'], 5, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Rn'], 5, 17, Qt.AlignLeft | Qt.AlignTop) if 'Fr' in ELEMENTS: elements_layout.addWidget(self._elements['Fr'], 6, 0, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ra'], 6, 1, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Rf'], 6, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Db'], 6, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sg'], 6, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Bh'], 6, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Hs'], 6, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Mt'], 6, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ds'], 6, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Rg'], 6, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cn'], 6, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Nh'], 6, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Fl'], 6, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Mc'], 6, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Lv'], 6, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ts'], 6, 16, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Og'], 6, 17, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['La'], 7, 2, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ce'], 7, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pr'], 7, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Nd'], 7, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pm'], 7, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Sm'], 7, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Eu'], 7, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Gd'], 7, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Tb'], 7, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Dy'], 7, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Ho'], 7, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Er'], 7, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Tm'], 7, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Yb'], 7, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Lu'], 7, 16, Qt.AlignLeft | Qt.AlignTop) if 'Ac' in ELEMENTS: elements_layout.addWidget(self._elements['Ac'], 8, 2, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Th'], 8, 3, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pa'], 8, 4, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['U'], 8, 5, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Np'], 8, 6, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Pu'], 8, 7, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Am'], 8, 8, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cm'], 8, 9, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Bk'], 8, 10, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Cf'], 8, 11, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Es'], 8, 12, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Fm'], 8, 13, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Md'], 8, 14, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['No'], 8, 15, Qt.AlignLeft | Qt.AlignTop) elements_layout.addWidget(self._elements['Lr'], 8, 16, Qt.AlignLeft | Qt.AlignTop) if select_multiple: organic_button = QPushButton("organic chemists'") organic_button.setCheckable(True) organic_button.clicked.connect(self._select_ochem) #layout.addWidget(organic_button, 9, col, Qt.AlignTop) z_lt_37_button = QPushButton("H-Kr") z_lt_37_button.setCheckable(True) z_lt_37_button.clicked.connect(self._select_z_lt_37) layout.addWidget(z_lt_37_button, 9, 0, Qt.AlignTop) z_ge_37_button = QPushButton("row 5+") z_ge_37_button.setCheckable(True) z_ge_37_button.clicked.connect(self._select_z_ge_37) layout.addWidget(z_ge_37_button, 9, 1, Qt.AlignTop) z_le_86_button = QPushButton("H-Rn") z_le_86_button.setCheckable(True) z_le_86_button.clicked.connect(self._select_z_le_86) layout.addWidget(z_le_86_button, 9, 2, Qt.AlignTop) tm_button = QPushButton("transition metals") tm_button.setCheckable(True) tm_button.clicked.connect(self._select_tm) layout.addWidget(tm_button, 9, 3, Qt.AlignTop) all_button = QPushButton("all") all_button.clicked.connect(self._select_all) all_button.clicked.connect(lambda *args: organic_button.setChecked(False)) all_button.clicked.connect(lambda *args: tm_button.setChecked(False)) all_button.clicked.connect(lambda *args: organic_button.setChecked(False)) all_button.clicked.connect(lambda *args: z_lt_37_button.setChecked(False)) all_button.clicked.connect(lambda *args: z_ge_37_button.setChecked(False)) all_button.clicked.connect(lambda *args: z_le_86_button.setChecked(False)) layout.addWidget(all_button, 10, 0, Qt.AlignTop) invert = QPushButton("invert") invert.clicked.connect(self._invert) invert.clicked.connect(lambda *args: organic_button.setChecked(False)) invert.clicked.connect(lambda *args: tm_button.setChecked(False)) invert.clicked.connect(lambda *args: organic_button.setChecked(False)) invert.clicked.connect(lambda *args: z_lt_37_button.setChecked(False)) invert.clicked.connect(lambda *args: z_ge_37_button.setChecked(False)) invert.clicked.connect(lambda *args: z_le_86_button.setChecked(False)) layout.addWidget(invert, 10, 2, Qt.AlignTop) clear = QPushButton("clear") clear.clicked.connect(self._clear) clear.clicked.connect(lambda *args: organic_button.setChecked(False)) clear.clicked.connect(lambda *args: tm_button.setChecked(False)) clear.clicked.connect(lambda *args: organic_button.setChecked(False)) clear.clicked.connect(lambda *args: z_lt_37_button.setChecked(False)) clear.clicked.connect(lambda *args: z_ge_37_button.setChecked(False)) clear.clicked.connect(lambda *args: z_le_86_button.setChecked(False)) layout.addWidget(clear, 10, 1, Qt.AlignTop) reset = QPushButton("reset") reset.clicked.connect(self._reset) reset.clicked.connect(lambda *args: organic_button.setChecked(False)) reset.clicked.connect(lambda *args: tm_button.setChecked(False)) reset.clicked.connect(lambda *args: organic_button.setChecked(False)) reset.clicked.connect(lambda *args: z_lt_37_button.setChecked(False)) reset.clicked.connect(lambda *args: z_ge_37_button.setChecked(False)) reset.clicked.connect(lambda *args: z_le_86_button.setChecked(False)) layout.addWidget(reset, 10, 3, Qt.AlignTop) layout.addWidget(elements_widget, 0, 0, 7, 4, Qt.AlignLeft | Qt.AlignTop) self.setSelectedElements(initial_elements) self._initial_elements = initial_elements layout.setRowStretch(0, 0) layout.setRowStretch(1, 0) layout.setRowStretch(2, 0) layout.setRowStretch(3, 0) layout.setRowStretch(4, 0) layout.setRowStretch(5, 0) layout.setRowStretch(6, 0) layout.setRowStretch(7, 0) layout.setRowStretch(8, 0) layout.setRowStretch(9, 0) layout.setRowStretch(10, 1) layout.setColumnStretch(0, 0) layout.setColumnStretch(1, 1) layout.setColumnStretch(2, 1) layout.setColumnStretch(3, 1) else: layout.addWidget(elements_widget) if len(initial_elements) > 0: self.setSelectedElements([initial_elements[0]]) self._initial_elements = [initial_elements[0]]