class StatisticsPanel(QWidget): _MAX_STAT_ROW = 3 def __init__(self, parent: QWidget = None): super().__init__(parent) self.spinner = QtWaitingSpinner(parent=self, centerOnParent=True, disableParentWhenSpinning=True) self.spinner.setInnerRadius(15) self.layout = QGridLayout() self.layout.setHorizontalSpacing(2) self.layout.setVerticalSpacing(4) self.setLayout(self.layout) def setStatistics(self, stat: Dict[str, object]) -> None: item: QLayoutItem = self.layout.takeAt(0) while item: item.widget().deleteLater() self.layout.removeItem(item) item = self.layout.takeAt(0) r: int = 0 c: int = 0 for k, v in stat.items(): self.layout.addWidget(QLabel('{}:'.format(k), self), r, c, 1, 1, alignment=Qt.AlignLeft) self.layout.addWidget(QLabel('{}'.format(str(v)), self), r, c + 1, 1, 1, alignment=Qt.AlignLeft) r += 1 if r % StatisticsPanel._MAX_STAT_ROW == 0: self.layout.setColumnMinimumWidth(c + 2, 5) # separator c += 3 r = 0
def __init__(self, parent=None): super(Cramolayout, self).__init__(parent) layout = QGridLayout() # layout.setColumnStretch(1, 3) # layout.setRowStretch(1, 3) layout.setColumnMinimumWidth(0, 100) layout.setColumnMinimumWidth(1, 100) layout.setColumnMinimumWidth(2, 200) layout.setColumnMinimumWidth(3, 100) self.btn_get_dtm = QPushButton("DTM file") self.btn_get_dtm.clicked.connect(self.get_dtm) layout.addWidget(self.btn_get_dtm, 0, 0) self.dtm_line = QLineEdit() layout.addWidget(self.dtm_line, 0, 1, 1, 3) self.start_btn = QPushButton("Create txt") self.start_btn.clicked.connect(self.start_time) self.start_btn.clicked.connect(self.create_txt) self.start_btn.clicked.connect(self.end_time) self.start_btn.clicked.connect(self.msgbox) layout.addWidget(self.start_btn, 1, 0, 1, 4) self.setWindowTitle("DTM coordinate") self.setLayout(layout)
def build(win): win.setFixedSize(624, 468) win.setStyleSheet("QMainWindow {background-image: url(:/background)}") layout_buttons = QGridLayout() # layout_buttons.setHorizontalSpacing(25) # win 25, mac 37 win.muppets = [] for i in range(6): win.muppets.append(MuppetButton(f":/b{i+1}", f":/b{i+1}a", i)) layout_buttons.addWidget(win.muppets[i], 0, i) # layout_buttons.setColumnMinimumWidth(i, 91) # win 91, mac 98 win.muppets[i].sound = _set_sound_source(f"s{i+1}") win.muppets[i].signal.connect(win.muppet_pressed(i)) # central widget win.central_widget = QWidget() central_layout = QVBoxLayout() central_layout.addWidget(win.central_widget) win.setCentralWidget(win.central_widget) # muppets widget win.buttons_widget = QWidget() win.buttons_widget.setFixedSize(QSize(624, 130)) win.buttons_widget.setLayout(layout_buttons) win.buttons_widget.setParent(win.central_widget) win.buttons_widget.move(0, 225) # ui play widget win.play_widget = QWidget() layout_play = QVBoxLayout() win.play_widget.setLayout(layout_play) win.play_widget.setParent(win.central_widget) win.play_widget.move(112, 348) win.play_button = UIButton('PLAY!', (400, 80)) win.play_button.clicked.connect(win.play_button_pressed) layout_play.addWidget(win.play_button) # ui levels widget win.levels_widget = QWidget() layout_levels = QGridLayout() win.levels_widget.setLayout(layout_levels) win.levels_widget.setParent(win.central_widget) win.levels_widget.move(112, 348) win.level_buttons = [] win.level_buttons.append(UIButton('Easy!', (190, 80))) win.level_buttons.append(UIButton('Hard!', (190, 80))) win.level_buttons[0].clicked.connect(win.level_button_pressed(0)) win.level_buttons[1].clicked.connect(win.level_button_pressed(1)) layout_levels.addWidget(win.level_buttons[0], 0, 0) layout_levels.addWidget(win.level_buttons[1], 0, 1, Qt.AlignRight) layout_levels.setColumnMinimumWidth(1, 200) layout_levels.setColumnMinimumWidth(0, 200) win.levels_widget.hide() # sounds start & failure win.start = _set_sound_source('start') win.end = _set_sound_source('end') win.muppets[0].sound.play()
def __init__(self, tool, sliders): QWidget.__init__(self) self.tool = tool self.sliders = sliders layout = QGridLayout() layout.setColumnMinimumWidth(1, 300) layout.setColumnMinimumWidth(2, 100) for n, slider in enumerate(sliders): layout.addWidget(slider.name_label, n, 0) layout.addWidget(slider.slider, n, 1) layout.addWidget(slider.offset_edit, n, 2) self.setLayout(layout)
def __init__(self): super().__init__() self.setTitle("Paramètres") self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) # Main layout main_layout = QHBoxLayout(self) main_layout.setSpacing(20) left_layout = QFormLayout() left_layout.setHorizontalSpacing(20) left_layout.setVerticalSpacing(14) self._threshold_sbox = QSpinBox() self._threshold_sbox.setRange(1, 99) self._threshold_sbox.setSuffix(" %") self._threshold_sbox.setMaximumWidth(250) left_layout.addRow("Seuil de détection :", self._threshold_sbox) self._devices_list = QComboBox() self._devices_list.setMaximumWidth(250) self._setDevicesList() left_layout.addRow("Processeur à utiliser :", self._devices_list) morphotype_layout = QGridLayout() morphotype_layout.setSpacing(5) morphotype_layout.addWidget(QLabel("Morphotypes à détecter :"), 0, 0, 1, 4) self._tab_cbox = {} for k,m in Loader.SpongesMorphotypes().items(): sponge_cbox = QCheckBox(m.name()) self._tab_cbox[k] = sponge_cbox x = k%2 + 1 y = k//2 + 1 morphotype_layout.addWidget(sponge_cbox, x, y) morphotype_layout.setColumnMinimumWidth(0, 15) morphotype_layout.setColumnStretch(0, 0) main_layout.addLayout(left_layout) main_layout.addLayout(morphotype_layout) self.setLayout(main_layout)
def __init__(self, parent, header): super(HeaderWidget, self).__init__(parent) layout = QGridLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setVerticalSpacing(1) row = 0 col = 0 for field in header.fields: name = field[0] value = field[1] fieldType = "" if len(field) > 2: fieldType = field[2] layout.addWidget(QLabel(name + ": "), row, col * 3) if isinstance(value, list): for i in range(0, len(value)): if fieldType == "ptr": label = ClickableAddressLabel(value[i]) elif fieldType == "code": label = ClickableCodeLabel(value[i]) else: label = QLabel(value[i]) label.setFont(binaryninjaui.getMonospaceFont(self)) layout.addWidget(label, row, col * 3 + 1) row += 1 else: if fieldType == "ptr": label = ClickableAddressLabel(value) elif fieldType == "code": label = ClickableCodeLabel(value) else: label = QLabel(value) label.setFont(binaryninjaui.getMonospaceFont(self)) layout.addWidget(label, row, col * 3 + 1) row += 1 if (header.columns > 1) and (row >= header.rows_per_column) and ((col + 1) < header.columns): row = 0 col += 1 for col in range(1, header.columns): layout.setColumnMinimumWidth(col * 3 - 1, UIContext.getScaledWindowSize(20, 20).width()) layout.setColumnStretch(header.columns * 3 - 1, 1) self.setLayout(layout)
def __init__(self, parent=None): super(Form, self).__init__(parent) # Create widgets self.title = QLabel("Junkfile", self) self.title.setStyleSheet( "color:#072120; font-weight: bold; font-size: 16px;") self.title.setAlignment(Qt.AlignCenter | Qt.AlignCenter) self.instruction = QLabel("Choose a directory folder:", self) self.edit = QLineEdit("Path...") self.edit.setReadOnly(True) self.button = QPushButton("Open ...") self.copy = QCheckBox("Would you like to make a copy?") self.arrange = QPushButton("Arrange") # Create layout layout = QGridLayout() layout.setColumnMinimumWidth(0, 400) # add widgets layout.addWidget(self.title, 0, 0, 1, 0, Qt.AlignCenter) layout.addWidget(self.instruction, 1, 0) layout.addWidget(self.edit, 2, 0) layout.addWidget(self.button, 2, 1) layout.addWidget(self.copy, 3, 0) layout.addWidget(self.arrange, 3, 1) # Set dialog layout self.setLayout(layout) # Add button to get directory path self.button.clicked.connect(self.openDirectoryDialog) # add button to execute Junkfile self.arrange.clicked.connect(self.runJunkfile)
def createGridLayout(self): from fresnel import interact # Top grid with sceneview and diffraction pattern self.tophorizontalGroupBox = QGroupBox() toplayout = QGridLayout() # Add the SceneView widget self.view = interact.SceneView(self.scene) self.view.rendering.connect(self.update_camera) toplayout.addWidget(self.view, 0, 0) # Add the diffraction widget dynamic_canvas = FigureCanvas(Figure(figsize=(15, 15))) toplayout.addWidget(dynamic_canvas, 0, 1) self.diffract_ax = dynamic_canvas.figure.add_subplot(111) self.diffract_ax.axis("off") self.diffract_ax.set_axis_off() self.plot_diffract(self.view.scene.camera) self.tophorizontalGroupBox.setLayout(toplayout) # Bottom grid with camera, buttons, zoom, sigma self.bothorizontalGroupBox = QGroupBox() botlayout = QGridLayout() # Camera printout self.label = QLabel() self.label.setText(self.camera_text(self.view.scene.camera)) # widget, row, col, rowspan, colspan botlayout.addWidget(self.label, 0, 0, 2, 1) # Buttons self.button100 = QPushButton("100") self.button100.setMaximumSize(QSize(100,40)) botlayout.addWidget(self.button100, 0, 1, 2, 1) self.button110 = QPushButton("110") self.button110.setMaximumSize(QSize(100,40)) botlayout.addWidget(self.button110, 0, 2, 2, 1) self.button111 = QPushButton("111") self.button111.setMaximumSize(QSize(100,40)) botlayout.addWidget(self.button111, 0, 3, 2, 1) # Connect buttons to moving the camera # thanks to this wonderful answer https://stackoverflow.com/a/57167056/11969403 self.button100.clicked.connect(lambda: self.move_camera((1,0,0))) self.button110.clicked.connect(lambda: self.move_camera((1,1,0))) self.button111.clicked.connect(lambda: self.move_camera((1,1,1))) # Add space between buttons and slider botlayout.setColumnMinimumWidth(4,350) # Zoom slider zlabel = QLabel("Zoom") zlabel.setAlignment(Qt.AlignCenter) botlayout.addWidget(zlabel, 0, 5) self.zooms = [i for i in range(1, self.d.N) if self.d.N % i == 0] self.zoomslider = QSlider(Qt.Horizontal) self.zoomslider.setMinimum(0) self.zoomslider.setMaximum(len(self.zooms)-1) self.zoomslider.setValue(self.zooms.index(self.d.zoom)) self.zoomslider.valueChanged.connect(self.change_zoom) self.zoomslider.setMaximumSize(QSize(600,30)) botlayout.addWidget(self.zoomslider, 1, 5) botlayout.setColumnMinimumWidth(6,50) self.bothorizontalGroupBox.setLayout(botlayout)
def init_ui(self): # Menu grid layout and its settings grid = QGridLayout(self) grid.setColumnMinimumWidth(4, 260) grid.setColumnStretch(4, 0) for i in [1, 2, 3, 5]: grid.setColumnMinimumWidth(i, 75) grid.setColumnStretch(i, 0) for i in [0, 6]: grid.setColumnStretch(i, 1) grid.setRowMinimumHeight(1, 360) grid.setRowMinimumHeight(2, 25) for i in [0, 3]: grid.setRowStretch(i, 1) # Widgets self.tabw = QTabWidget(self) grid.addWidget(self.tabw, 1, 1, 1, 5) self.tabs = {} self.tabs['pile'] = QWidget(self) self.pilegrid = QGridLayout(self.tabs['pile']) self.pilegrid.setRowStretch(6, 1) self.tabw.addTab(self.tabs['pile'], 'Sandpile') self.tabs['visl'] = QWidget(self) self.vslgrid = QGridLayout(self.tabs['visl']) self.tabw.addTab(self.tabs['visl'], 'Visual') self.pilegrid.addWidget(QLabel('Seed:', self.tabs['pile']), 0, 0, 1, 1) self.pilegrid.addWidget(QLabel('Type:', self.tabs['pile']), 2, 0, 1, 1) self.seedfield = QLineEdit(self.tabs['pile']) self.pilegrid.addWidget(self.seedfield, 1, 0, 1, 4) self.buttons = {} self.buttons['cont'] = QPushButton('Continue', self) def func1(): self.root.toggle_menu() self.root.toggle_pause() self.buttons['cont'].clicked.connect(func1) grid.addWidget(self.buttons['cont'], 2, 1, 1, 1) self.buttons['rest'] = QPushButton('Restart', self) def func2(): self.root.restart_pile() func1() self.buttons['rest'].clicked.connect(func2) grid.addWidget(self.buttons['rest'], 2, 2, 1, 1) self.buttons['roll'] = QPushButton('Reset', self) def func3(): txt = self.seedfield.text() try: seed = eval(txt) except: seed = [[8]] self.root.reroll_pile(piletype=self.piletype, seed=seed) func1() self.buttons['roll'].clicked.connect(func3) grid.addWidget(self.buttons['roll'], 2, 3, 1, 1) self.buttons['clsm'] = QPushButton('Close Menu', self) self.buttons['clsm'].clicked.connect(self.root.toggle_menu) grid.addWidget(self.buttons['clsm'], 2, 5, 1, 1) self.typeradios = {} for i, key in enumerate(['o4i', 'o4f', 'o8i', 'o8f']): b = QRadioButton(key, self.tabs['pile']) self.typeradios[key] = b self.pilegrid.addWidget(b, 3, i, 1, 1) for i, key in enumerate(['t4i', 't4f', 't8f']): b = QRadioButton(key, self.tabs['pile']) self.typeradios[key] = b self.pilegrid.addWidget(b, 4, i, 1, 1) for i, key in enumerate(['t6hi', 't6hf', 't6vi', 't6vf']): b = QRadioButton(key, self.tabs['pile']) self.typeradios[key] = b self.pilegrid.addWidget(b, 5, i, 1, 1) for k in self.typeradios: b = self.typeradios[k] b.clicked.connect(self.set_piletype) self.vslgrid.addWidget(QLabel('Timed delay:', self.tabs['visl']), 0, 0, 1, 1) self.vslgrid.addWidget(QLabel('Frames per step:', self.tabs['visl']), 1, 0, 1, 1) self.vslgrid.setRowStretch(2, 1) self.vslgrid.setColumnStretch(2, 1) self.tdspinbox = QSpinBox(self.tabs['visl']) self.tdspinbox.setMinimum(10) self.tdspinbox.valueChanged.connect(self.set_td) self.vslgrid.addWidget(self.tdspinbox, 0, 1, 1, 1) self.fpsspinbox = QSpinBox(self.tabs['visl']) self.fpsspinbox.setMinimum(1) self.fpsspinbox.setMaximum(300) self.fpsspinbox.valueChanged.connect(self.set_fps) self.vslgrid.addWidget(self.fpsspinbox, 1, 1, 1, 1)
def __init__(self, parent=None): super(Cramolayout, self).__init__(parent) layout = QGridLayout() # layout.setColumnStretch(1, 3) # layout.setRowStretch(1, 3) layout.setColumnMinimumWidth(0, 100) layout.setColumnMinimumWidth(1, 100) layout.setColumnMinimumWidth(2, 100) layout.setColumnMinimumWidth(3, 100) self.btn_get_dtm = QPushButton("DTM file") self.btn_get_dtm.clicked.connect(self.get_dtm) layout.addWidget(self.btn_get_dtm, 0, 0) self.dtm_line = QLineEdit() layout.addWidget(self.dtm_line, 0, 1, 1, 3) self.btn_get_shp = QPushButton("shp file") self.btn_get_shp.clicked.connect(self.get_column_names) layout.addWidget(self.btn_get_shp, 1, 0) self.shp_line = QLineEdit() layout.addWidget(self.shp_line, 1, 1, 1, 3) self.lblName = QLabel('Id', self) self.lblName.setStyleSheet("font: 9pt Myriad Pro") layout.addWidget(self.lblName, 3, 0) self.lblName = QLabel('Crater size', self) self.lblName.setStyleSheet("font: 9pt Myriad Pro") layout.addWidget(self.lblName, 3, 1) self.lblName = QLabel('X coord', self) self.lblName.setStyleSheet("font: 9pt Myriad Pro") layout.addWidget(self.lblName, 3, 2) self.lblName = QLabel('Y coord', self) self.lblName.setStyleSheet("font: 9pt Myriad Pro") layout.addWidget(self.lblName, 3, 3) self.id_box = QComboBox() layout.addWidget(self.id_box, 4, 0) self.size_box = QComboBox() layout.addWidget(self.size_box, 4, 1) self.x_coord_box = QComboBox() layout.addWidget(self.x_coord_box, 4, 2) self.y_coord_box = QComboBox() layout.addWidget(self.y_coord_box, 4, 3) self.chk_size = QCheckBox('Radius', self) self.chk_size.toggle() layout.addWidget(self.chk_size, 5, 1) self.chk_unit = QCheckBox('Size in meters', self) self.chk_unit.toggle() layout.addWidget(self.chk_unit, 6, 1) self.start_btn = QPushButton("Start cramo") # self.start_btn.clicked.connect(self.choose_parameters) self.start_btn.clicked.connect(self.create_for_txt_file) self.start_btn.clicked.connect(self.start_cramo) layout.addWidget(self.start_btn, 7, 0, 1, 4) # self.textEdit = QTextEdit(self) # self.textEdit.setStyleSheet("font: 9pt Myriad Pro") # layout.addWidget(self.start_btn, 8, 0) self.setWindowTitle("easyCramo V2") self.setLayout(layout)
class auctionPage(QWidget): def __init__(self, fantasyFootball, role): super(auctionPage, self).__init__() self.fantasyFootball = fantasyFootball self.role = role self.externalLayout = QHBoxLayout() self.externalLayout.addWidget(self.sxGroupBox()) self.externalLayout.addWidget(self.dxGroupBox()) self.setLayout(self.externalLayout) def sxGroupBox(self): self.sxGroupBox = QGroupBox('new Player') self.auctionLayout = QVBoxLayout() self.auctionLayout.addWidget(self.createRandomGroup()) self.auctionLayout.addWidget(self.createContendentButtonsGroup()) self.auctionLayout.addWidget(self.createUtilityButtonsGroup()) self.sxGroupBox.setLayout(self.auctionLayout) return self.sxGroupBox def dxGroupBox(self): self.dxGroupBox = QGroupBox('Teams') self.teamListLayout = QGridLayout() i = 0 self.listWidgetCol = {} self.removeButtonList = {} for contender in self.fantasyFootball.contendersTeams.contendersNames: self.titleList = QLabel(contender) self.listWidgetCol[contender] = QListWidget() i_button = 0 for singlePlayer in self.fantasyFootball.contendersTeams.contendersTeams[ contender].iterrows(): print('singlePlayer = ', singlePlayer) playerToAdd = singlePlayer[1] playerName = playerToAdd.get(key='Nome') playerRole = playerToAdd.get(key='R') finalString = playerRole + ' ' + playerName self.listWidgetCol[contender].addItem(finalString) self.removeButtonList[contender] = (QPushButton('Remove Selected')) self.removeButtonList[contender].setEnabled(False) self.removeButtonList[contender].clicked.connect( lambda x=False, contender=contender: self.removeFromContender( x, contender)) print('i', i) self.teamListLayout.setColumnMinimumWidth(i, 130) # self.teamListLayout.setColumnMinimumWidth(i+1,1) self.teamListLayout.addWidget(self.titleList, 0, i) self.teamListLayout.addWidget(self.listWidgetCol[contender], 1, i) self.teamListLayout.addWidget(self.removeButtonList[contender], 2, i) i += 1 self.dxGroupBox.setLayout(self.teamListLayout) return self.dxGroupBox def removeFromContender(self, isClicked, contender): itemSelected = self.listWidgetCol[contender].selectedItems() print(itemSelected) print(itemSelected) print(itemSelected) print(itemSelected) if itemSelected: print("ECCOLO") # self.listWidgetCol[contender].takeTopLevelItem(itemSelected) # self.fantasyFootball.backOne() # else: # self. # for item in listItems: # itemIndex=self.listA.indexOfTopLevelItem(item) # self.listA.takeTopLevelItem(itemIndex) # print '\n\t Number of items remaining', self.listA.topLevelItemCount() # check if is possible to return player or we are in another role aution # if (len(self.fantasyFootball.contendersTeams.contendersTeams[contender]) == 0): # self.reintegrateButton.setEnabled(False) # else: # self.reintegrateButton.setEnabled(True) # self.fantasyFootball.backOne() # lastContender = self.historyInsertion[len(self.historyInsertion)-1] # # remove last item insert # self.listWidgetCol[lastContender].takeItem(self.listA.row(item)) # self.listWidgetCol[lastContender].item((QStringList.size()-1)).setSelected(True) # def createsingleListView(self): # print('p') # self.test = QLabel('dfizuvhp') # return self.test def setRole(self, role): self.role = role # _________METHODS TO CREATE GUI GROUPS___________________ def createRandomGroup(self): self.randomGroup = QGroupBox('random player') self.randomButton = QPushButton() self.randomButton.setText('random ' + self.role) self.randomPlayerName = QLabel('') self.randomPlayerTeam = QLabel('') self.randomPlayerQuote = QLabel('') self.vBox = QVBoxLayout() self.vBox.addWidget(self.randomButton) self.vBox.addWidget(self.randomPlayerName) self.vBox.addWidget(self.randomPlayerTeam) self.vBox.addWidget(self.randomPlayerQuote) self.randomGroup.setLayout(self.vBox) self.randomButton.clicked.connect(self.randomButtonAction) return self.randomGroup def createContendentButtonsGroup(self): self.contendentGroup = QGroupBox('insert player in contender teams') self.GBox = QVBoxLayout() print('createContendentButtonsGroup') self.buttonDict = {} # buttonL non utilizzato, potrebbe servire? self.buttonL = [] for name in self.fantasyFootball.contendersTeams.contendersNames: self.buttonDict[name] = QPushButton(name) self.buttonDict[name].setEnabled(False) self.GBox.addWidget(self.buttonDict[name]) self.buttonL.append(self.buttonDict[name]) self.buttonDict[name].clicked.connect( lambda x=False, i=name: self.insertPlayerInTeam(x, i)) self.contendentGroup.setLayout(self.GBox) return self.contendentGroup def createUtilityButtonsGroup(self): self.utilityGroup = QGroupBox('') self.backToRole = QPushButton() self.backToRole.setText('back to roles') self.hBox = QHBoxLayout() self.hBox.addWidget(self.backToRole) self.utilityGroup.setLayout(self.hBox) # self.backToRole.clicked.connect is implement in page 0 return self.utilityGroup # SLOT utility buttons def reintegrateAction(self): # check if is possible to return player or we are in another role aution lastContender = self.historyInsertion[len(self.historyInsertion) - 1] # remove last item insert self.listWidgetCol[lastContender].takeItem(self.listA.row(item)) self.listWidgetCol[lastContender].item( (QStringList.size() - 1)).setSelected(True) # self.listWidgetCol[contender].remove # if self.fantasyFootball.checkRole(self.role): # self.reintegrateButton.setEnabled(True) # self.fantasyFootball.backOne(self.role) def discardsButtonAction(self): self.fantasyFootball.discardRejected() # SLOT click teamName # check if rejected in ok def insertPlayerInTeam(self, isClicked, name): # reset random playerView self.randomPlayerName.setText('') self.randomPlayerTeam.setText('') self.randomPlayerQuote.setText('') # setButton disable or enable for button in self.buttonDict.values(): button.setEnabled(False) self.randomButton.setEnabled(True) self.fantasyFootball.addPlayerToTeam(name, self.singlePlayer) print('________ALL REMAIN PLAYER TEST WITH GOALKEEPER____________') print(self.fantasyFootball.roleLists.goalkeeperDF) print('________ALL CONTENDER TEAMS____________') print(self.fantasyFootball.contendersTeams.contendersTeams) playerToAdd = self.singlePlayer.iloc[0, 2] self.listWidgetCol[name].addItem(playerToAdd) # SLOT click random button def randomButtonAction(self): # check if possible to turn back a player or not and set right button visibility print(self.fantasyFootball.checkRole(self.role)) print(self.role) print(len(self.fantasyFootball.contendersTeams.historyInsertion)) print(len(self.fantasyFootball.contendersTeams.historyInsertion)) print(len(self.fantasyFootball.contendersTeams.historyInsertion)) print(len(self.fantasyFootball.contendersTeams.historyInsertion)) print(len(self.fantasyFootball.contendersTeams.historyInsertion)) # setButton disable or enable for button in self.buttonDict.values(): button.setEnabled(True) self.randomButton.setEnabled(False) # if rolePlayerDF is empty if ((self.role == 'goalkeeper' and self.fantasyFootball.roleLists.goalkeeperDF.empty) or (self.role == 'midfielder' and self.fantasyFootball.roleLists.midfielderDF.empty) or (self.role == 'defender' and self.fantasyFootball.roleLists.defenderDF.empty) or (self.role == 'forward' and self.fantasyFootball.roleLists.forwardDF.empty)): self.randomPlayerName.setText('no more ' + self.role + ' to choose') self.randomPlayerTeam.setText('') self.randomPlayerQuote.setText('') else: self.singlePlayer = self.fantasyFootball.randomPick(self.role) # toPrint = name + squadra + quota iniziale toPrint = [] # name toPrint.append(self.singlePlayer.iloc[0, 2]) # team toPrint.append(self.singlePlayer.iloc[0, 3]) # quote toPrint.append(str(self.singlePlayer.iloc[0, 5])) self.randomPlayerName.setText('Name: ' + toPrint[0]) self.randomPlayerTeam.setText('Team: ' + toPrint[1]) self.randomPlayerQuote.setText('Quote: ' + toPrint[2])
class ConsolePanel(QDialog): def __init__(self, parent=None): super().__init__(parent=parent, f=Qt.Window) self.setWindowTitle(self.tr("Console")) self.init_ui() self.normal_msg = QMessageBox(self) self.normal_msg.setWindowTitle(self.tr("Warning")) self.normal_msg.setText( self. tr("Close this window will terminate the work of other windows, are you sure to close it?" )) self.normal_msg.setStandardButtons(QMessageBox.Close | QMessageBox.Cancel) self.normal_msg.setDefaultButton(QMessageBox.Cancel) def init_ui(self): self.dataset_generator = RandomDatasetGenerator(parent=self) self.dataset_viewer = GrainSizeDatasetViewer(parent=self) self.pca_resolver = PCAResolverPanel(parent=self) self.hc_resolver = HCResolverPanel(parent=self) self.emma_resolver = EMMAResolverPanel(parent=self) self.ssu_resolver = SSUResolverPanel(parent=self) self.ssu_tester = SSUAlgorithmTesterPanel(parent=self) # self.setting_window = AppSettingPanel(parent=self) self.abount_window = AboutPanel(parent=self) self.main_layout = QGridLayout(self) self.main_layout.setRowMinimumHeight(0, 120) self.main_layout.setRowMinimumHeight(1, 120) self.main_layout.setColumnMinimumWidth(0, 160) self.main_layout.setColumnMinimumWidth(1, 160) self.main_layout.setColumnMinimumWidth(2, 160) self.main_layout.setColumnMinimumWidth(3, 160) self.dataset_generator_button = QToolButton() self.dataset_generator_button.setSizePolicy( QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.dataset_generator_button.setIcon(qta.icon("fa.random")) self.dataset_generator_button.setIconSize(QSize(64, 64)) self.dataset_generator_button.setText(self.tr("Dataset Generator")) self.dataset_generator_button.setToolButtonStyle( Qt.ToolButtonTextUnderIcon) self.dataset_generator_button.clicked.connect( lambda: self.dataset_generator.show()) self.dataset_viewer_button = QToolButton() self.dataset_viewer_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.dataset_viewer_button.setIcon(qta.icon("fa.table")) self.dataset_viewer_button.setIconSize(QSize(64, 64)) self.dataset_viewer_button.setText(self.tr("Dataset Viewer")) self.dataset_viewer_button.setToolButtonStyle( Qt.ToolButtonTextUnderIcon) self.dataset_viewer_button.clicked.connect( lambda: self.dataset_viewer.show()) self.pca_resolver_button = QToolButton() self.pca_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.pca_resolver_button.setIcon(qta.icon("fa.exchange")) self.pca_resolver_button.setIconSize(QSize(64, 64)) self.pca_resolver_button.setText(self.tr("PCA Resolver")) self.pca_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.pca_resolver_button.clicked.connect( lambda: self.pca_resolver.show()) self.hc_resolver_button = QToolButton() self.hc_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.hc_resolver_button.setIcon(qta.icon("fa.sitemap")) self.hc_resolver_button.setIconSize(QSize(64, 64)) self.hc_resolver_button.setText(self.tr("HC Resolver")) self.hc_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.hc_resolver_button.clicked.connect( lambda: self.hc_resolver.show()) self.emma_resolver_button = QToolButton() self.emma_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.emma_resolver_button.setIcon(qta.icon("fa.cubes")) self.emma_resolver_button.setIconSize(QSize(64, 64)) self.emma_resolver_button.setText(self.tr("EMMA Resolver")) self.emma_resolver_button.setToolButtonStyle( Qt.ToolButtonTextUnderIcon) self.emma_resolver_button.clicked.connect( lambda: self.emma_resolver.show()) self.ssu_resolver_button = QToolButton() self.ssu_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.ssu_resolver_button.setIcon(qta.icon("fa.puzzle-piece")) self.ssu_resolver_button.setIconSize(QSize(64, 64)) self.ssu_resolver_button.setText(self.tr("SSU Resolver")) self.ssu_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.ssu_resolver_button.clicked.connect( lambda: self.ssu_resolver.show()) self.ssu_tester_button = QToolButton() self.ssu_tester_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.ssu_tester_button.setIcon(qta.icon("fa.flask")) self.ssu_tester_button.setIconSize(QSize(64, 64)) self.ssu_tester_button.setText(self.tr("SSU Tester")) self.ssu_tester_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.ssu_tester_button.clicked.connect(lambda: self.ssu_tester.show()) # self.setting_button = QToolButton() # self.setting_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) # self.setting_button.setIcon(qta.icon("fa.gears")) # self.setting_button.setIconSize(QSize(64, 64)) # self.setting_button.setText(self.tr("Setting")) # self.setting_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # self.setting_button.clicked.connect(lambda: self.setting_window.show()) self.about_button = QToolButton() self.about_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.about_button.setIcon(qta.icon("fa.info-circle")) self.about_button.setIconSize(QSize(64, 64)) self.about_button.setText(self.tr("About")) self.about_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.about_button.clicked.connect(lambda: self.abount_window.show()) self.main_layout.addWidget(self.dataset_generator_button, 0, 0) self.main_layout.addWidget(self.dataset_viewer_button, 0, 1) self.main_layout.addWidget(self.pca_resolver_button, 0, 2) self.main_layout.addWidget(self.hc_resolver_button, 0, 3) self.main_layout.addWidget(self.emma_resolver_button, 1, 0) self.main_layout.addWidget(self.ssu_resolver_button, 1, 1) self.main_layout.addWidget(self.ssu_tester_button, 1, 2) self.main_layout.addWidget(self.about_button, 1, 3) def closeEvent(self, event: QCloseEvent): res = self.normal_msg.exec_() if res == QMessageBox.Close: event.accept() else: event.ignore()
class ProcessWidget(BlinkBackgroundWidget): actionRequested = Signal(str, str) process_state_changed = Signal(str, str) def __init__(self, process_data: ProcessData, *args, **kwargs): super().__init__(*args, **kwargs) self._awaiting_response = False self._process_data: ProcessData = process_data self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum) self.layout = QGridLayout() self.layout.setColumnMinimumWidth(0, 50) # self.layout.setColumnStretch(0, 1) self.layout.setContentsMargins(4, 4, 4, 4) self.layout.setVerticalSpacing(2) self.btn_restart = QPushButton(self, text="Restart") self.btn_start_stop = QPushButton(self, text="Start/Stop") self.btn_start_stop.setObjectName("btn_start_stop") self.btn_start_stop.setMinimumWidth(60) self.btn_restart.setMinimumWidth(60) self.txt_command = QLabel(self, text=process_data.command) self.txt_command.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum) # self.txt_command.setPlaceholderText("Your command") self.lbl_uid = QLabel(self, text=process_data.uid) self.lbl_uid.setStyleSheet("font-weight: bold") self.lbl_state = QLabel(self, text=process_data.state_info()) self.layout.addWidget(self.lbl_uid, 0, 0, 1, 2) self.layout.addWidget(self.lbl_state, 0, 2, 1, 1) self.layout.addWidget(self.txt_command, 1, 2) self.layout.addWidget(self.btn_start_stop, 1, 0) self.layout.addWidget(self.btn_restart, 1, 1) self.setLayout(self.layout) self.btn_start_stop.setIcon(self.style().standardIcon( QStyle.SP_MediaPlay)) self.btn_restart.setIcon(self.style().standardIcon( QStyle.SP_BrowserReload)) self.btn_start_stop.clicked.connect(self._start_stop_clicked) self.btn_restart.clicked.connect( lambda: self.request_action("restart")) self.update_state(process_data.state, process_data.exit_code, True) def get_command_text(self): return self.txt_command.text() def _start_stop_clicked(self): action = "stop" if self._process_data.is_in_state( ProcessData.STARTED) else "start" self.request_action(action) def request_action(self, action: str): logger.debug("Requesting action: %s", action) self._disable_buttons(True) self.actionRequested.emit(self._process_data.uid, action) @Slot(str) def on_action_completed(self, action_response: str): logger.debug("Action completed: %s", action_response) self._set_button_ui( self._process_data.state) # make sure the conform to state def _disable_buttons(self, disable=True): self.btn_start_stop.setDisabled(disable) self.btn_restart.setDisabled(disable) def on_update_process_data(self, process_data: ProcessData): logger.debug("Process data updated: %s", process_data) self.update_state(process_data.state, process_data.exit_code) self.txt_command.setText(process_data.command) def update_state(self, state: str, exit_code: int, state_changed=False): self._process_data.exit_code = exit_code self._set_button_ui(state) if self._process_data.state != state or state_changed: self._process_data.state = state self.lbl_state.setText(self._process_data.state_info()) self.change_bg_color_with_blink( get_color_for_process(self._process_data)) self.process_state_changed.emit(self._process_data.uid, state) def _set_button_ui(self, state: str): is_running = state == ProcessData.STARTED self.btn_start_stop.setDisabled(False) if is_running: self.btn_start_stop.setText("Stop") self.btn_start_stop.setIcon(self.style().standardIcon( QStyle.SP_MediaStop)) elif state in (ProcessData.INITIALIZED, ProcessData.ENDED): self.btn_start_stop.setText("Start") self.btn_start_stop.setIcon(self.style().standardIcon( QStyle.SP_MediaPlay)) else: self.btn_start_stop.setDisabled(True) self.btn_restart.setDisabled(not is_running)