def initScores(container: QWidget): container.removeWidget(state["scoreWidget"]) state["scoreWidget"].deleteLater() newScoreWidget = QWidget() newScoreWidget.hide() scoreLayout = QGridLayout() scoreLayout.setAlignment(Qt.AlignTop) diff1 = QLabel("Easy") scoreLayout.addWidget(diff1, 0, 1) for i, el in enumerate(state["highScores"]["easy"]): text = "{} {}".format(el[0], el[1]) topPlayer = QLabel(text) scoreLayout.addWidget(topPlayer, i + 1, 1) diff2 = QLabel("Normal") scoreLayout.addWidget(diff2, 0, 2) for i, el in enumerate(state["highScores"]["normal"]): text = "{} {}".format(el[0], el[1]) topPlayer = QLabel(text) scoreLayout.addWidget(topPlayer, i + 1, 2) diff3 = QLabel("Hard") scoreLayout.addWidget(diff3, 0, 3) for i, el in enumerate(state["highScores"]["hard"]): text = "{} {}".format(el[0], el[1]) topPlayer = QLabel(text) scoreLayout.addWidget(topPlayer, i + 1, 3) newScoreWidget.setLayout(scoreLayout) state["scoreWidget"] = newScoreWidget container.addWidget(newScoreWidget)
def changeDifficulty( container: QWidget, horizontalButtonCount: int, verticalButtonCount: int, numberOfMines: int, stateInfo: dict, ): """ Basically restarts game with wanted dimensions and how many mines wanted. This function is used in this app to change difficulty and/or restart the game. """ container.removeWidget(stateInfo["mineFieldWidget"]) container.removeWidget(stateInfo["scoreForm"]) stateInfo["mineFieldWidget"].deleteLater() stateInfo["scoreForm"].deleteLater() stateInfo["mineInfo"] = numberOfMines newscoreForm = scoreForm() container.addWidget(newscoreForm) newscoreForm.hide() stateInfo["scoreForm"] = newscoreForm newMineField = QWidget() setState(horizontalButtonCount, verticalButtonCount, numberOfMines) newField = initField(stateInfo, BUTTONWIDTH, BUTTONHEIGHT) stateInfo["mineFieldWidget"] = newMineField newMineField.setLayout(newField) container.addWidget(newMineField)
def initStats(container: QWidget, stateInfo: dict): container.removeWidget(stateInfo["statsWidget"]) stateInfo["statsWidget"].deleteLater() newstatsWidget = QWidget() newstatsWidget.hide() statsLayout = QVBoxLayout() for el in stateInfo["statistics"]: infoLabel = QLabel(el) statsLayout.addWidget(infoLabel) newstatsWidget.setLayout(statsLayout) container.addWidget(newstatsWidget) stateInfo["statsWidget"] = newstatsWidget
def _drawElement(self, element: Element, parent: QtWidgets.QWidget) -> None: self._logger.info("Draw element: %s to %s", element.clazz, parent) if issubclass(element.clazz, PluginWidgetMixin) and "config" in inspect.signature( element.clazz.__init__).parameters.keys(): widget = gg(element.clazz)(element.config) else: widget = element.clazz() if isinstance(widget, QtWidgets.QSplitter) and element.vertical: widget.setOrientation(QtCore.Qt.Orientation.Vertical) if isinstance(parent, QtWidgets.QMainWindow): self._logger.info("Parent is main window") parent.setCentralWidget(widget) elif isinstance(parent, QtWidgets.QSplitter): self._logger.info("Parent is splitter") parent.addWidget(widget) parent.setProperty("iceSizes", (parent.property("iceSizes") or ()) + (element.weight * 2 ** 16,)) parent.setSizes(parent.property("iceSizes")) else: raise AssertionError("Unsupported parent: %s" % type(parent)) for child in element.children: self._drawElement(child, widget)
def _gui_setup(self): layout = QHBoxLayout() splitter = QSplitter(Qt.Horizontal) panel_right = QWidget(self) layout.addWidget(splitter) annotation = Annotation() self.annotation = annotation transcripts = Transcripts(annotation, self) transcripts.setDisabled(True) splitter.addWidget(transcripts) self.transcripts = transcripts splitter.addWidget(panel_right) l = QVBoxLayout() l.setContentsMargins(0, 0, 0, 0) panel_right.setLayout(l) panel_right = l minutes = Minutes(annotation, self) minutes.setDisabled(True) self.minutes = minutes problems = Problems(self) problems.setEnabled(False) problems.problem_selected.connect(self.annotation.set_problem) problems.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.problems = problems splitter_right = QSplitter(Qt.Vertical) splitter_right.addWidget(minutes) splitter_right.addWidget(problems) panel_right.addWidget(splitter_right) player = Player(self) player.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.player = player panel_right.addWidget(player) evaluation = Evaluation(self) evaluation.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.evaluation = evaluation panel_right.addWidget(evaluation) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) menu = self.menuBar() file_menu = menu.addMenu('&File') a = file_menu.addAction('&New') a.setShortcut('Ctrl+n') a.triggered.connect(self.new) a = file_menu.addAction('&Open existing') a.setShortcut('Ctrl+o') a.triggered.connect(self.open_existing) a = file_menu.addAction('&Open repository') a.setShortcut('Ctrl+g') a.triggered.connect(self.open_repository) file_menu.addSeparator() a = file_menu.addAction('Evaluation mode') a.setCheckable(True) a.setShortcut('Ctrl+e') a.triggered.connect(self.set_evaluation_mode) file_menu.addSeparator() a = file_menu.addAction('&Save') a.setShortcut('Ctrl+s') a.triggered.connect(self.save) file_menu.addSeparator() a = file_menu.addAction('S&ettings') a.setShortcut('Ctrl++') a.triggered.connect(lambda: Settings(self).exec_()) file_menu.addSeparator() a = file_menu.addAction('&Close') a.setShortcut('Alt+c') a.triggered.connect(self.close) playback_menu = menu.addMenu('&Playback') a = playback_menu.addAction('&Open audio') a.triggered.connect(self._open_audio) playback_menu.addSeparator() playback_menu.addActions(player.playback_actions) s = QSettings(self) self.splitter = splitter self.splitter_righ = splitter_right splitter.restoreState(s.value('splitter')) splitter_right.restoreState(s.value('splitter_righ')) self.restoreGeometry(s.value('window_geometry')) self.restoreState(s.value('window_state')) splitter_right.setStretchFactor(0, 10) splitter_right.setStretchFactor(1, 1)