def __createToolbar(self): self.buttons = {} toolbar = QToolBar("bottom toolbar") toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.BottomToolBarArea) toolbar.setIconSize(QSize(32, 32)) button1 = QPushButton("Show All") toolbar.addWidget(button1) toolbar.addSeparator() button2 = QPushButton("Play") toolbar.addWidget(button2) toolbar.addSeparator() button3 = QPushButton("Stop") toolbar.addWidget(button3) toolbar.addSeparator() button4 = QPushButton("Record") toolbar.addWidget(button4) toolbar.addSeparator() self.addToolBar(Qt.BottomToolBarArea, toolbar)
class BufferSelectToolbar(object): def __init__(self, selectTool): super(BufferSelectToolbar, self).__init__() # references self.selectTool = selectTool self.result = None self.debug = self.selectTool.debug self.id = id self.config = self.selectTool.config self.info = Info(self) try: self.gtomain = self.selectTool.gtomain self.helper = self.gtomain.helper self.metadata = self.gtomain.metadata self.iface = self.gtomain.iface self.canvas = self.iface.mapCanvas() # tool data self.toolbar_dock = self.config.get("toolbar_dock", 4) self.toolbar_height = self.gtomain.toolbar_height # widget self.toolbar = None # load toolbar objName = "gtoTB_" + __name__ + str(id) self.toolbar = self.gtomain.helper.findToolbar(self.iface, objName) if self.toolbar is None: if self.debug: self.info.log("load", objName) self.toolbar = QToolBar() self.toolbar.setObjectName(objName) self.toolbar.setWindowTitle(u'GTO Buffer Selection') self.toolbar.setAllowedAreas(Qt.BottomToolBarArea | Qt.TopToolBarArea) self.iface.mainWindow().addToolBarBreak(self.toolbar_dock) self.iface.addToolBar(self.toolbar, self.toolbar_dock) # set the iconsize=> changed when self.iface.addToolBar :S if self.toolbar_height is not None: self.toolbar.setMaximumHeight(self.gtomain.toolbar_height) self.toolbar.setMinimumHeight(self.gtomain.toolbar_height) else: self.toolbar.clear() self.wid = Widget(self) self.toolbar.addWidget(self.wid) self.wid.setIconSizes(self.iface.iconSize(False)) self.wid.geometry_changed.connect(self.getGeometry) self.toolbar.setHidden(False) except Exception as e: self.info.err(e) # from mActionbufferselectxy def setHidden(self, a0): self.toolbar.setHidden(a0) def setGeometry(self, geo, isValid, isCircle=False, isRectangle=False): self.toolbar.setHidden(False) if self.debug: self.info.log("setGeometry", geo.isEmpty(), isValid, isCircle, isRectangle) self.wid.setOriginalGeometry(geo, isValid, isCircle, isRectangle) def getGeometry(self, geo): self.selectTool.setGeometryToMapTool(geo)
def setup_toobar(self): logo = QPixmap('src/_assets/images/logo.png') logo = logo.scaled(64, 64) label_logo = QLabel() label_logo.setPixmap(logo) self.btn_price = QToolButton() self.btn_price.setText("Preços") self.btn_controler = QToolButton() self.btn_controler.setText("Controle") self.btn_report = QToolButton() self.btn_report.setText("Relatório") toolbar = QToolBar() toolbar.addWidget(label_logo) toolbar.addWidget(self.btn_price) toolbar.addWidget(self.btn_controler) toolbar.addWidget(self.btn_report) self.btn_price.setStyleSheet(STYLES.active_tool_button) self.btn_report.setStyleSheet(STYLES.tool_button) self.btn_controler.setStyleSheet(STYLES.tool_button) self.btn_controler.clicked.connect(self.controller_handle_click) self.btn_report.clicked.connect(self.report_handle_click) self.btn_price.clicked.connect(self.price_handle_click) toolbar.setAllowedAreas(Qt.TopToolBarArea) toolbar.setStyleSheet(STYLES.toolbar) self.addToolBar(toolbar) label_logo.setStyleSheet('margin-left: 10px; margin-right: 10px;')
class run(QObject): # gtoAction def __init__(self, id, gtoTool, config, debug): super(run, self).__init__() # references self.debug = debug self.id = id self.config = config self.info = gtoTool.info try: self.action = gtoTool.action self.action.setCheckable(True) self.gtomain = gtoTool.gtomain self.helper = self.gtomain.helper self.metadata = self.gtomain.metadata self.iface = self.gtomain.iface self.canvas = self.iface.mapCanvas() if not self.config.get("is_widgetaction", False): # tool data self.toolbar_dock = self.config.get("toolbar_dock", 4) # widget self.toolbar = None # load toolbar self.objName = "gtoTB_" + gtoTool.action.objectName() + str(id) self.toolbar = self.gtomain.helper.findToolbar(self.iface, self.objName) if self.toolbar is None: if self.debug: self.info.log("load", self.objName) self.toolbar = QToolBar() self.toolbar.setObjectName(self.objName) self.toolbar.setWindowTitle(u'GTO Coordinate') self.toolbar.setAllowedAreas(Qt.BottomToolBarArea | Qt.TopToolBarArea) self.iface.mainWindow().addToolBarBreak(self.toolbar_dock) self.iface.addToolBar(self.toolbar, self.toolbar_dock) else: self.toolbar.clear() self.wid = GTOPointWidget(self.gtomain, self.toolbar) self.toolbar.addWidget(self.wid) if self.config.get("spacer", False): spacer = QWidget() spacer.setObjectName('spacer') spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) spacer.setStyleSheet("QWidget{background: transparent;}") self.toolbar.addWidget(spacer) self.wid.set_parent_widget(self) self.wid.isActive.connect(self.set_status) # not always(?) working? self.wid.setConfig(self.config) self.wid.added() self.wid.setMapTool() self.toolbar.show() except Exception as e: self.info.err(e) def set_status(self, isActive): try: self.action.setChecked(isActive) self.toolbar.setHidden(not isActive) except Exception as e: self.info.err(e)
class run(object): def __init__(self, id, gtoTool, config, debug): super(run, self).__init__() try: # references self.result = None self.debug = debug self.id = id self.config = config self.info = gtoTool.info self.gtomain = gtoTool.gtomain self.helper = self.gtomain.helper self.metadata = self.gtomain.metadata self.iface = self.gtomain.iface # tool data widegt self.toolbar_dock = self.config.get("toolbar_dock", None) # widget self.toolbar = None self.wid = Widget(self, self.iface.mainWindow()) if self.toolbar_dock is not None: # load toolbar objName = "gtoTB_" + gtoTool.action.objectName() self.toolbar = self.gtomain.helper.findToolbar( self.iface, objName) if self.toolbar is None: if self.debug: self.info.log("load", objName) self.toolbar = QToolBar() self.toolbar.setObjectName(objName) self.toolbar.setWindowTitle(u'GTO Suche') self.toolbar.setAllowedAreas(Qt.BottomToolBarArea | Qt.TopToolBarArea) self.iface.mainWindow().addToolBarBreak(self.toolbar_dock) self.iface.addToolBar(self.toolbar, self.toolbar_dock) else: self.toolbar.clear() self.toolbar.setHidden(False) else: self.toolbar = self.gtomain.gtotb self.toolbar.addWidget(self.wid) if self.config.get("show_hide_button", False): self.helper.addToolbarClose(self.toolbar) self.toolbar.visibilityChanged.connect(self.reset) except Exception as e: self.info.err(e) def reset(self, *args): # from (gto)toolbar hidden/shown try: if self.debug: self.info.log("gtoAction reset") self.wid.reset() except Exception as e: self.info.err(e)
def createToolBar(self) -> QToolBar: navigationBar = QToolBar(self.tr("Navigation")) navigationBar.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) navigationBar.toggleViewAction().setEnabled(False) self.m_historyBackAction = QAction(self) backShortcuts = QKeySequence.keyBindings(QKeySequence.Back) for i, x in enumerate(reversed(backShortcuts)): if x[0] == Qt.Key_Backspace: # Chromium already handles navigate on backspace when appropriate. backShortcuts.pop(i) # For some reason Qt doesn't bind the dedicated Back key to Back. backShortcuts.append(QKeySequence(Qt.Key_Back)) self.m_historyBackAction.setShortcuts(backShortcuts) self.m_historyBackAction.setIconVisibleInMenu(False) self.m_historyBackAction.setIcon(QIcon(":go-previous.png")) self.m_historyBackAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage.Back)) navigationBar.addAction(self.m_historyBackAction) self.m_historyForwardAction = QAction(self) fwdShortcuts = QKeySequence.keyBindings(QKeySequence.Forward) for i, x in enumerate(reversed(fwdShortcuts)): if x[0] & Qt.Key_unknown == Qt.Key_Backspace: fwdShortcuts.pop(i) fwdShortcuts.append(QKeySequence(Qt.Key_Forward)) self.m_historyForwardAction.setShortcuts(fwdShortcuts) self.m_historyForwardAction.setIconVisibleInMenu(False) self.m_historyForwardAction.setIcon(QIcon(":go-next.png")) self.m_historyForwardAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage. Forward)) navigationBar.addAction(self.m_historyForwardAction) self.m_stopReloadAction = QAction(self) self.m_stopReloadAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction( QWebEnginePage.WebAction(self.m_stopReloadAction.data()))) navigationBar.addAction(self.m_stopReloadAction) navigationBar.addWidget(self.m_urlLineEdit) size = self.m_urlLineEdit.sizeHint().height() navigationBar.setIconSize(QSize(size, size)) return navigationBar
def __init__(self, style='default'): super(QRibbonWindow, self).__init__() self.style = style self.setObjectName('QRibbonWindow') self.tabs = [] self.groups = [] # 设置样式 self.default = default if self.style == 'default': _default = default.replace("{{margin}}", str(self.margin)) self.setStyleSheet(_default + '\n' + self.styleSheet()) # 去除右键菜单 self.setContextMenuPolicy(Qt.NoContextMenu) # 添加工具栏 toolBar = QToolBar(self) toolBar.setMouseTracking(True) self.ribbonWidget = QRibbonWidget(toolBar) toolBar.addWidget(self.ribbonWidget) toolBar.setAllowedAreas(Qt.NoToolBarArea) toolBar.setMovable(False) toolBar.setFloatable(False) self.addToolBar(toolBar) # 添加中心控件 self.centralWidget = QWidget(self) self.centralWidget.setMouseTracking(True) self.centralWidget.setObjectName("centralWidget") self.setCentralWidget(self.centralWidget) # 安装时间过滤器 self.installEventFilter(self) self.ribbonWidget.tabPanel.installEventFilter(self) self.minButton.installEventFilter(self) self.maxButton.installEventFilter(self) self.closeButton.installEventFilter(self) # 最小化、最大化、关闭按钮事件 self.minButton.clicked.connect(self.showMinimized) self.maxButton.clicked.connect(self.toggle_max) self.closeButton.clicked.connect(self.close)
def initUI(self): self.tboard = Board(self) self.tboard.setDraught(self) self.setCentralWidget(self.tboard) mainMenu = self.menuBar() gameMenu = mainMenu.addMenu(" Game") resetAction = QAction("Reset", self) resetAction.setShortcut("Ctrl+R") pvp = QAction("Player vs Player", self) pvp.setShortcut("Ctrl+P") pve = QAction("Player vs Ai", self) pve.setShortcut("Ctrl+A") gameMenu.addAction(resetAction) gameMenu.addAction(pvp) gameMenu.addAction(pve) resetAction.triggered.connect(self.resetGame) pvp.triggered.connect(self.playerGame) pve.triggered.connect(self.aiGame) self.statusbar = self.statusBar() self.tboard.msg2Statusbar[str].connect(self.statusbar.showMessage) toolbar = QToolBar() toolbar.setAllowedAreas(Qt.RightToolBarArea) toolbar.setIconSize(QSize(40, 40)) toolbar.setFloatable(False) toolbar.setMovable(False) magicWidget = QWidget() self.grid = QGridLayout() myFont = QFont() myFont.setBold(True) myFont.setPixelSize(15) self.playerLabel = QLabel("Player") self.playerLabel.setFont(myFont) self.playerTurn = self.turnLabel() self.opponentLabel = QLabel("Opponent") self.opponentLabel.setFont(myFont) self.opponentLabel.setContentsMargins(0, 30, 0, 0) self.opponentTurn = self.turnLabel() self.opponentTurn.setContentsMargins(0, 30, 0, 0) self.playerPawnLeft = QLabel(str(self.tboard.players[0].pawnLeft)) self.opponentPawnLeft = QLabel(str(self.tboard.players[1].pawnLeft)) self.playerPawnKilled = QLabel(str(self.tboard.players[0].pawnKilled)) self.opponentPawnKilled = QLabel(str( self.tboard.players[1].pawnKilled)) self.grid.addWidget(self.playerLabel, 0, 0) self.grid.addWidget(self.playerTurn, 0, 1) self.grid.addWidget(self.remainingLabel(), 1, 0) self.grid.addWidget(self.playerPawnLeft, 1, 1) self.grid.addWidget(self.killedLabel(), 2, 0) self.grid.addWidget(self.playerPawnKilled, 2, 1) self.grid.addWidget(self.opponentLabel, 3, 0) self.grid.addWidget(self.opponentTurn, 3, 1) self.grid.addWidget(self.remainingLabel(), 4, 0) self.grid.addWidget(self.opponentPawnLeft, 4, 1) self.grid.addWidget(self.killedLabel(), 5, 0) self.grid.addWidget(self.opponentPawnKilled, 5, 1) magicWidget.setLayout(self.grid) toolbar.addWidget(magicWidget) self.updateTurnLabel() self.addToolBar(Qt.RightToolBarArea, toolbar) self.resize(550, 400) self.center() self.setWindowTitle('Draught') self.show()
class MainWindow(QMainWindow, Ui_MainWindow): """ Main window class representing the main window of app. """ def __init__(self, *args, **kwargs): QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self) self.central_ide_widget = CentralIDEWidget(self) self.code_editor = self.central_ide_widget.code_editor_widget self.horizontal_layout.addWidget(self.central_ide_widget) self.vertical_layout.addLayout(self.horizontal_layout) self.bottom_tool_bar = QToolBar(self) self.bottom_tool_bar.setMovable(False) self.bottom_tool_bar.setAllowedAreas(Qt.BottomToolBarArea) self.addToolBar(Qt.BottomToolBarArea, self.bottom_tool_bar) self.bottom_tool_bar.addAction("bottom tool bar") self.statusbar_widget = StatusBarWidget(self.statusbar) self.statusbar.addPermanentWidget(self.statusbar_widget, 1) self.trigger_menu_actions() def trigger_menu_actions(self) -> None: """ Trigger all actions in menu """ self.actionNew.triggered.connect(self.new_file) self.actionOpen.triggered.connect(self.open_file) self.actionSave.triggered.connect(self.save_file) self.actionSave_as.triggered.connect(self.save_file_as) self.actionExit.triggered.connect(self.exit_application) def set_new_cursor_position(self, cursor: QTextCursor) -> None: """ Set new cursor position in main status bar Args: cursor(QTextCursor): active cursor of code editor in active tab """ self.statusbar_widget.set_line_and_column( cursor.block().blockNumber() + 1, cursor.positionInBlock() + 1) def new_file(self) -> None: """ Create new tab / file """ self.code_editor.new_file() def open_file(self) -> None: """ Open file in new tab. """ file_path, _ = QFileDialog.getOpenFileName( self, "Open file", ".", FILE_TYPES_SEPARATOR.join((PYTHON_FILES, ALL_FILES))) if not file_path: return try: self.code_editor.open_file(file_path) except PermissionError: # TODO: logovani ErrorDialog("Permission error", "Can't open this file: permission denied", self).show() except FileNotFoundError: ErrorDialog("File not found", "Can't open this file: file not found", self).show() except Exception: ErrorDialog("Unknown error", "Can't open this file: unknown error", self).show() def save_file(self) -> None: """ Save file in active tab. """ if not self.code_editor.opened_tabs: return if not self.code_editor.is_file_saved(): return self.save_file_as() try: self.code_editor.save_file() except PermissionError: ErrorDialog("Permission error", "Can't save this file: permission denied", self).show() except Exception as e: ErrorDialog("Unknown error", "Can't save this file: unknown error", self).show() def save_file_as(self) -> None: """ Save as file in active tab """ if not self.code_editor.opened_tabs: return file_path, _ = QFileDialog.getSaveFileName( self, "Save file", ".", FILE_TYPES_SEPARATOR.join((PYTHON_FILES, ALL_FILES))) if not file_path: return try: self.code_editor.save_file(file_path) except PermissionError: ErrorDialog("Permission error", "Can't save this file: permission denied", self).show() except Exception: ErrorDialog("Unknown error", "Can't save this file: unknown error", self).show() def exit_application(self) -> None: """ Close app """ self.close()
def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction(QIcon.fromTheme( 'format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction(QIcon.fromTheme( 'format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction(QIcon.fromTheme( 'format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText("%s" % (QApplication.font().pointSize())))
def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction( QIcon.fromTheme('format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction( QIcon.fromTheme('format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction( QIcon.fromTheme('format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText( "%s" % (QApplication.font().pointSize())))
class TfrmBase(QMainWindow, TScreenStates): recordCount = 0 def __init__(self, parent=None): super(TfrmBase, self).__init__() self.FOnStateChange = self.onStateChange self.activeState = self.ssInactive self._defaultSettings() self._createWidgets() self._setEvents() def _defaultSettings(self): self.setObjectName("frmBase") self.resize(640, 480) self.setMinimumSize(QSize(640, 480)) def _createWidgets(self): self._createLayout() self._createMenus() self._createToolBar() self._createStatusBar() self._createPages() self._setLayouts() def _createLayout(self): self.clientArea = QWidget() self.clientArea.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) self.clientArea.setMinimumSize(QSize(640, 400)) self.clientArea.setBaseSize(QSize(640, 400)) self.clientArea.setLayoutDirection(Qt.LeftToRight) self.clientArea.setObjectName("clientArea") self.gridLayout = QGridLayout(self.clientArea) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setSpacing(0) self.gridLayout.setObjectName("gridLayout") def _createMenus(self): # Create a Menu Bar self.mnMenu = self.menuBar() self.mnMenu.setObjectName("mnMenu") # Create all Top Menus self.mnApp = QMenu('&Aplicação') self.mnApp.setObjectName('mnApp') self.mnOpe = QMenu('&Operação') self.mnOpe.setObjectName("mnOperations") self.mnNav = QMenu('&Navegação') self.mnNav.setObjectName("mnNav") # Set Menus to MenuBar self.mnMenu.addMenu(self.mnNav) self.mnMenu.addMenu(self.mnOpe) self.mnMenu.addMenu(self.mnApp) # Crealte all Actions to Application Menu self._createAppActions() self._createOpeActions() self._setMenuActions() self.mnMenu.addAction(self.mnApp.menuAction()) self.mnMenu.addAction(self.mnOpe.menuAction()) self.mnMenu.addAction(self.mnNav.menuAction()) self._settingActionsEvents() def _createAppActions(self): # Exit Program Action self.acExit = QAction( self.getIcon("./resources/exit.ico", QSize(32, 32)), '&Sair') self.acExit.setObjectName("acExit") self.acExit.setShortcut('Ctrl+Q') self.acExit.setStatusTip('Finalizar o Programa') self.acExit.triggered.connect(self.closeApp) def _createOpeActions(self): # Search Action self.acSearch = QAction( self.getIcon("./resources/Search.ico", QSize(32, 32)), '&Pesquisar') self.acSearch.setObjectName("acSearch") self.acSearch.setShortcut('F5,Ctrl+P') self.acSearch.setStatusTip( 'Preenche o Filtro para Selecionar Registros') # List Action self.acList = QAction( self.getIcon("./resources/list.ico", QSize(32, 32)), '&Listar') self.acList.setShortcut('Ctrl+L') self.acList.setStatusTip('Listar todos os Registros') self.acList.setObjectName("acList") # Insert Action self.acInsert = QAction( self.getIcon("./resources/db_add.ico", QSize(32, 32)), '&Inserir') self.acInsert.setShortcut('F2,Ins') self.acInsert.setStatusTip('Incluir Novo Registros') self.acInsert.setObjectName("acInsert") # Update Action self.acUpdate = QAction( self.getIcon("./resources/db_update.ico", QSize(32, 32)), '&Editar') self.acUpdate.setShortcut('Ctrl+U') self.acUpdate.setStatusTip('Editar o Registro Atual') self.acUpdate.setObjectName("acUpdate") # Delete Action self.acDelete = QAction( self.getIcon("./resources/db_remove.ico", QSize(32, 32)), '&Excluir') self.acDelete.setShortcut('Ctrl+Del') self.acDelete.setStatusTip('Exclui o Registro Atual') self.acDelete.setObjectName("acDelete") # Save Action self.acSave = QAction( self.getIcon("./resources/db_commit.ico", QSize(32, 32)), '&Salvar') self.acSave.setShortcut('F10,Ctrl+S') self.acSave.setStatusTip('Salva as Alterações do Registro') self.acSave.setObjectName("acSave") # Cancel Action self.acCancel = QAction( self.getIcon("./resources/cancel.ico", QSize(32, 32)), '&Cancelar') self.acCancel.setShortcut('Esc') self.acCancel.setStatusTip('Cancela as Alterações do Registro') self.acCancel.setObjectName("acCancel") # First Action self.acFirst = QAction( self.getIcon("./resources/start.ico", QSize(32, 32)), '&Início') self.acFirst.setShortcut('Ctrl+Left') self.acFirst.setStatusTip('Vai para o Primeiro Registro') self.acFirst.setObjectName("acFirst") # Prior Action self.acPrior = QAction( self.getIcon("./resources/left.ico", QSize(32, 32)), '&Anterior') self.acPrior.setShortcut('Left') self.acPrior.setStatusTip('Vai para o Registro Anterior') self.acPrior.setObjectName("acPrior") # Next Action self.acNext = QAction( self.getIcon("./resources/right.ico", QSize(32, 32)), '&Próximo') self.acNext.setShortcut('Right') self.acNext.setStatusTip('Vai para o Próximo Registro') self.acNext.setObjectName("acNext") # Last Action self.acLast = QAction( self.getIcon("./resources/end.ico", QSize(32, 32)), '&Último') self.acLast.setShortcut('Ctrl+Right') self.acLast.setStatusTip('Vai para o Último Registro') self.acLast.setObjectName("acLast") # Form Title Action self.dcTitle = QAction() font = QFont() font.setPointSize(14) font.setBold(True) font.setWeight(75) self.dcTitle.setFont(font) self.dcTitle.setObjectName("dcTitle") def getIcon(self, res: str, size: QSize) -> QIcon: icon = QIcon() icon.addPixmap( QPixmap(res).scaled(size.width(), size.height(), Qt.KeepAspectRatio), QIcon.Active, QIcon.On) return icon def _setMenuActions(self): # Set Menu Application Actions self.mnApp.addAction(self.acExit) # Set Menu Operations Actions self.mnOpe.addAction(self.acSearch) self.mnOpe.addAction(self.acList) self.mnOpe.addSeparator() self.mnOpe.addAction(self.acInsert) self.mnOpe.addAction(self.acUpdate) self.mnOpe.addAction(self.acDelete) self.mnOpe.addSeparator() self.mnOpe.addAction(self.acSave) self.mnOpe.addAction(self.acCancel) # Set Menu Navigation Actions self.mnNav.addAction(self.acFirst) self.mnNav.addAction(self.acPrior) self.mnNav.addAction(self.acNext) self.mnNav.addAction(self.acLast) def _settingActionsEvents(self): # Set Menu Operations Trigger onClick self.acSearch.triggered.connect( lambda: self.setFormStatus(self.ssSearch)) self.acList.triggered.connect( lambda: self.setFormStatus(self.ssSearchAll)) self.acInsert.triggered.connect( lambda: self.setFormStatus(self.ssInsert)) self.acUpdate.triggered.connect( lambda: self.setFormStatus(self.ssUpdate)) self.acDelete.triggered.connect( lambda: self.setFormStatus(self.ssDelete)) self.acSave.triggered.connect(lambda: self.setFormStatus(self.ssPost)) self.acCancel.triggered.connect( lambda: self.setFormStatus(self.ssCancel)) # Set Menu Navigation Trigger onClick self.acFirst.triggered.connect( lambda: self.setFormStatus(self.ssFirst)) self.acPrior.triggered.connect( lambda: self.setFormStatus(self.ssPrior)) self.acNext.triggered.connect(lambda: self.setFormStatus(self.ssNext)) self.acLast.triggered.connect(lambda: self.setFormStatus(self.ssLast)) def _createToolBar(self): # Create a tbActions ToolBar self.tbActions = QToolBar() self.tbActions.setMinimumSize(QSize(300, 34)) self.tbActions.setMaximumSize(QSize(16777215, 34)) self.tbActions.setBaseSize(QSize(300, 34)) self.tbActions.setAcceptDrops(False) self.tbActions.setToolTipDuration(3) self.tbActions.setAllowedAreas(Qt.TopToolBarArea) self.tbActions.setObjectName("tbActions") self.addToolBar(Qt.TopToolBarArea, self.tbActions) # Create a tbTitle ToolBar self.tbTitle = QToolBar() self.tbTitle.setMinimumSize(QSize(340, 34)) self.tbTitle.setMaximumSize(QSize(16777215, 34)) self.tbTitle.setBaseSize(QSize(341, 34)) self.tbTitle.setAllowedAreas(Qt.TopToolBarArea) self.tbTitle.setToolButtonStyle(Qt.ToolButtonTextOnly) self.tbTitle.setFloatable(False) self.tbTitle.setObjectName("tbTitle") # self.tbTitle.setLabelAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.addToolBar(Qt.TopToolBarArea, self.tbTitle) # Call Add Actions to ToolBar self._setToolBarActions() def _setToolBarActions(self): # Set ToolBar Actions self.tbActions.addAction(self.acSearch) self.tbActions.addAction(self.acInsert) self.tbActions.addAction(self.acUpdate) self.tbActions.addAction(self.acDelete) self.tbActions.addSeparator() self.tbActions.addAction(self.acSave) self.tbActions.addAction(self.acExit) self.tbTitle.addAction(self.dcTitle) def _createStatusBar(self): self.sbStatus = QStatusBar() self.sbStatus.setMaximumHeight(24) self.sbStatus.setObjectName("sbStatus") self.sbStatus.setStyleSheet(""" .QLabel { background-color: #FFFFFF; color: #000000; } """) self.lbStatus = QLabel(self.sbStatus) self.lbStatus.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.lbStatus.setText('Inactive') self.lbStatus.setMinimumSize(QSize(130, 15)) self.lbStatus.setFrameShape(QFrame.Panel) self.lbStatus.setFrameShadow(QFrame.Sunken) self.sbStatus.addPermanentWidget(self.lbStatus) self.setStatusBar(self.sbStatus) def _createPages(self): self.tabMain = QTabWidget(self.clientArea) self.tabMain.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) self.tabMain.setTabPosition(QTabWidget.South) self.tabMain.setObjectName("tabMain") self.pgList = QWidget(self.tabMain) self.pgList.setObjectName("pgList") self.pgDetail = QWidget(self.tabMain) self.pgDetail.setObjectName("pgDetail") self.tabMain.addTab(self.pgList, "") self.tabMain.addTab(self.pgDetail, "") self._createPageListContent() def _createPageListContent(self): self.treeWidget = QTreeWidget(self.pgList) self.treeWidget.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) self.treeWidget.setFrameShape(QFrame.NoFrame) self.treeWidget.setFrameShadow(QFrame.Plain) self.treeWidget.setColumnCount(3) self.treeWidget.setObjectName("treeWidget") self.treeWidget.headerItem().setText(0, "Campo") self.treeWidget.headerItem().setText(1, "Campo") self.treeWidget.headerItem().setText(2, "Campo") self.treeWidget.setGeometry(QRect(0, 0, 640, 370)) self.treeWidget.setMinimumSize(QSize(640, 370)) self.tabMain.setCurrentIndex(0) def _setLayouts(self): self.gridLayout.addWidget(self.tabMain, 0, Qt.AlignBottom | Qt.AlignRight, 1, 1) self.setCentralWidget(self.clientArea) def translateForm(self): self._translate = QCoreApplication.translate self.setWindowTitle( self._translate("TfrmBase", "Tela de Básica de Cadastros")) self.mnApp.setTitle(self._translate("TfrmBase", "Aplicação")) self.mnOpe.setTitle(self._translate("TfrmBase", "Operações")) self.mnNav.setTitle(self._translate("TfrmBase", "Navegação")) self.sbStatus.setToolTip(self._translate("TfrmBase", "Barra de Status")) self.tbActions.setWindowTitle( self._translate("TfrmBase", "Ferramentas")) self.tbActions.setToolTip( self._translate("TfrmBase", "Barra de Ferramentas")) self.tbTitle.setWindowTitle(self._translate("TfrmBase", "Descrição")) self.acExit.setText(self._translate("TfrmBase", "&Sair")) self.acExit.setToolTip(self._translate("TfrmBase", "Sair do Programa")) self.acSearch.setText(self._translate("TfrmBase", "&Pesquisar")) self.acSearch.setStatusTip( self._translate("TfrmBase", "Procurar Por um Registro")) self.acList.setText(self._translate("TfrmBase", "&Listar Todos")) self.acList.setStatusTip( self._translate("TfrmBase", "Lista todos os Registros")) self.acInsert.setText(self._translate("TfrmBase", "&Inserir")) self.acInsert.setStatusTip( self._translate("TfrmBase", "Adicionar Registro")) self.acUpdate.setText(self._translate("TfrmBase", "&Editar")) self.acUpdate.setStatusTip( self._translate("TfrmBase", "Editar Registro")) self.acDelete.setText(self._translate("TfrmBase", "E&xcluir")) self.acDelete.setStatusTip( self._translate("TfrmBase", "Excluir Registro")) self.acSave.setText(self._translate("TfrmBase", "&Salvar")) self.acSave.setToolTip(self._translate("TfrmBase", "Salvar Registro")) self.acCancel.setText(self._translate("TfrmBase", "&Cancelar")) self.acCancel.setToolTip( self._translate("TfrmBase", "Cencelar Alterações")) self.dcTitle.setText( self._translate("TfrmBase", "Título da Tela de Cadastros")) self.dcTitle.setToolTip( self._translate("TfrmBase", "Título da Tela de Cadastros")) self.tabMain.setTabText( self.tabMain.indexOf(self.pgList), self._translate("TfrmBase", "Lista dos Registros")) self.tabMain.setTabToolTip( self.tabMain.indexOf(self.pgList), self._translate("TfrmBase", "Listagem das Ferramentas")) self.tabMain.setTabText( self.tabMain.indexOf(self.pgDetail), self._translate("TfrmBase", "Detalhes do Registro Selecionando")) @property def activeState(self): return self._activeValue @property def activeStateColor(self): return self.activeValue['FG'] @property def activeStateBackgroud(self): return self.activeValue['BG'] @activeState.setter # Seta a Propriedade _activeState def activeState(self, value: int): self.workValue = value self._activeState = value def setScreenState(self, stt: int): self.acExit.setEnabled(self.inBrowse(stt)) # Set Menu Operations Actions self.acSearch.setEnabled((self.inBrowse(stt) or (self.recordCount == 0))) self.acList.setEnabled((self.inBrowse(stt) or (self.recordCount == 0))) self.acInsert.setEnabled(self.inBrowse(stt)) self.acUpdate.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) self.acDelete.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) self.acSave.setEnabled(self.inUpdate(stt)) self.acCancel.setEnabled(self.inUpdate(stt)) # Set Menu Navigation Actions self.acFirst.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) self.acPrior.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) self.acNext.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) self.acLast.setEnabled((self.inBrowse(stt) and (self.recordCount > 0))) # Set tab Main if state in Browse enabled self.tabMain.setEnabled(self.inBrowse(stt)) def _layoutWidgets(self): return (self.frmLayout.itemAt(i) for i in range(self.frmLayout.count())) def _getAllFields(self): arrFields = [] for w in self._layoutWidgets(): if (not (isinstance(w, QLabel))): arrFields.append(w) return arrFields def setEnableFields(self, enable: bool = True): # Enable All Fields for controls in self._layoutWidgets(): QWidget(controls).setEnabled(enable) def clearFields(self): # cliar content of all fileds for controls in self._getAllFields(): QWidget(controls).setText('') def setColorFields(self): # cliar content of all fileds style = ".QWidget { backgroud-color: " + self.activeStateBackgroud + "; }" for controls in self._getAllFields(): QWidget(controls).setStyle(style) def showDataDetails(self): # move data of selected record to fileds if (self.tabMain.currentIndex() == 0): self.tabMain.setCurrentIndex(1) def filterRecord(self): raise NotImplementedError(500) def getFirstRecord(self): raise NotImplementedError(500) def getPriorRecord(self): raise NotImplementedError(500) def getNextRecord(self): raise NotImplementedError(500) def getLastRecord(self): raise NotImplementedError(500) def insertRecord(self): raise NotImplementedError(500) def deleteRecord(self): raise NotImplementedError(500) def updateRecord(self): raise NotImplementedError(500) def postRecord(self): raise NotImplementedError(500) def execOpertations(self, state: int): if ((state == self.ssFilter) or (state == self.ssSearchAll)): self.filterRecord() elif (state == self.ssFirst): self.getFirstRecord() elif (state == self.ssPrior): self.getPriorRecord() elif (state == self.ssNext): self.getNextRecord() elif (state == self.ssLast): self.getLastRecord() elif (state == self.ssInsert): self.insertRecord() elif (state == self.ssDelete): self.deleteRecord() elif (state == self.ssUpdate): self.updateRecord() elif (state == self.ssPost): self.postRecord() else: raise NotImplementedError(401, 'Operação não suportada') @pyqtSlot(int) def setFormStatus(self, state: int): if ((state == self.ssSearch) and (self.activeState != state)): self.clearFields() self.setColorFields() self.showDataDetails() if (self.activeState != state): self.activeState = state if (state == self.ssCancel): self.activeState = self.ssBrowse @pyqtSlot(int, int, dict, str) def onStateChange(self, NewState: int, OldState: int, Result: dict = {}, Err: str = ''): try: # show screen state on status bar state = self.getStateProperties(NewState) style = '.QLabel { background-color: ' + state[ 'BG'] + '; color: ' + state['FG'] + '; }' self.sbStatus.setStyleSheet(style) self.lbStatus.setText(state['Descr']) # call operation into child screen self.execOpertations(NewState) # change buttons states self.setScreenState(NewState) # set result status code and result satatus Message self.setResultStatusCode = 200 self.setResultStatusMessage = '' except Exception as e: self.ResultStatusCode = 200 self.ResultStatusMessage = str(e) QMessageBox.critical(self, self.windowTitle(), self.ResultStatusMessage) return self.result @pyqtSlot() def tabMainChanged(self): self.sbStatus.showMessage('TabMain change tabIndex to (' + str(self.tabMain.currentIndex()) + ')!') if (self.tabMain.currentIndex() == 1): self.showDataDetails() @pyqtSlot() def InsertData(self): # self.sbStatus.showMessage('Prepare to insert data....') pass def _setEvents(self): self.tabMain.blockSignals( True) # just for not showing the initial message self.tabMain.currentChanged.connect(self.tabMainChanged) # changed! self.tabMain.blockSignals(False) # wait signals now @pyqtSlot() def closeApp(self): self.close()
def initUI(self): ### Instantitate the board class self.tboard = Board(self) self.tboard.setDraught(self) self.setCentralWidget(self.tboard) ### Create the menu and action mainMenu = self.menuBar() gameMenu = mainMenu.addMenu(" Game") resetAction = QAction("Reset", self) resetAction.setShortcut("Ctrl+R") pvp = QAction("Player vs Player", self) pvp.setShortcut("Ctrl+P") pve = QAction("Player vs Ai", self) pve.setShortcut("Ctrl+A") gameMenu.addAction(resetAction) gameMenu.addAction(pvp) gameMenu.addAction(pve) resetAction.triggered.connect(self.resetGame) pvp.triggered.connect(self.playerGame) pve.triggered.connect(self.aiGame) ### Toolbar that will contain information about the game, toolbar = QToolBar() toolbar.setAllowedAreas(Qt.RightToolBarArea) toolbar.setIconSize(QSize(40, 40)) toolbar.setFloatable(False) toolbar.setMovable(False) magicWidget = QWidget() self.grid = QGridLayout() myFont = QFont() myFont.setBold(True) myFont.setPixelSize(15) ### Label of both player self.playerLabel = QLabel("Player 1") self.playerLabel.setFont(myFont) self.playerTurn = self.turnLabel() self.opponentLabel = QLabel("Player 2") self.opponentLabel.setFont(myFont) self.opponentLabel.setContentsMargins(0, 30, 0, 0) self.opponentTurn = self.turnLabel() self.opponentTurn.setContentsMargins(0, 30, 0, 0) self.playerPawnLeft = QLabel(str(self.tboard.players[0].pawnLeft)) self.opponentPawnLeft = QLabel(str(self.tboard.players[1].pawnLeft)) self.playerPawnKilled = QLabel(str(self.tboard.players[0].pawnKilled)) self.opponentPawnKilled = QLabel(str( self.tboard.players[1].pawnKilled)) ### Putting all widget in grid self.grid.addWidget(self.playerLabel, 0, 0) self.grid.addWidget(self.playerTurn, 0, 1) self.grid.addWidget(self.remainingLabel(), 1, 0) self.grid.addWidget(self.playerPawnLeft, 1, 1) self.grid.addWidget(self.killedLabel(), 2, 0) self.grid.addWidget(self.playerPawnKilled, 2, 1) self.grid.addWidget(self.opponentLabel, 3, 0) self.grid.addWidget(self.opponentTurn, 3, 1) self.grid.addWidget(self.remainingLabel(), 4, 0) self.grid.addWidget(self.opponentPawnLeft, 4, 1) self.grid.addWidget(self.killedLabel(), 5, 0) self.grid.addWidget(self.opponentPawnKilled, 5, 1) magicWidget.setLayout(self.grid) ###Putting the grid in a toolbar toolbar.addWidget(magicWidget) ### Update the label every turn self.updateTurnLabel() self.addToolBar(Qt.RightToolBarArea, toolbar) self.resize(550, 400) self.center() self.setWindowTitle('Draught') self.show()