Как включить возможность полноэкранного режима в PyQT5 (например для Youtube)

введите сюда описание изображения

Я хочу от этого избавиться, как?

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.Qt import *
from PyQt5.QtCore import QProcess
import pyautogui as p
import locale
import inspect
import os
import sys
import time
import subprocess
import requests

lang = locale.getdefaultlocale()[0]
print(f'lang = {lang}')  #


def get_script_dir(follow_symlinks=True):
    if getattr(sys, 'frozen', False):  # py2exe, PyInstaller, cx_Freeze
        path = os.path.abspath(sys.executable)
    else:
        path = inspect.getabsfile(get_script_dir)
    if follow_symlinks:
        path = os.path.realpath(path)
    return os.path.dirname(path)


script_dir = get_script_dir()


class Ui_tbWidget(object):
    def setupUi(self, tbWidget):
        tbWidget.setObjectName("tbWidget")
        tbWidget.resize(600, 40)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(tbWidget.sizePolicy().hasHeightForWidth())
        tbWidget.setSizePolicy(sizePolicy)
        tbWidget.setMinimumSize(QtCore.QSize(0, 40))
        tbWidget.setMaximumSize(QtCore.QSize(16777215, 40))

        self.verticalLayout = QtWidgets.QVBoxLayout(tbWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")

        self.tbWidget_2 = QtWidgets.QWidget(tbWidget)
        self.tbWidget_2.setMinimumSize(QtCore.QSize(0, 40))
        self.tbWidget_2.setMaximumSize(QtCore.QSize(16777215, 40))
        self.tbWidget_2.setStyleSheet("QWidget#tbWidget_2{\n"
                                      "    background-color: #000000;\n"
                                      "}")
        self.tbWidget_2.setObjectName("tbWidget_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tbWidget_2)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.tbWidget_5 = QtWidgets.QWidget(self.tbWidget_2)
        self.tbWidget_5.setMinimumSize(QtCore.QSize(0, 40))
        self.tbWidget_5.setMaximumSize(QtCore.QSize(16777215, 40))
        self.tbWidget_5.setObjectName("tbWidget_5")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tbWidget_5)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setSpacing(0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.tbLabel_6 = QtWidgets.QLabel('MikoTube', self.tbWidget_5,
                                          alignment=QtCore.Qt.AlignCenter)
        self.tbLabel_6.setObjectName("tbLabel_6")
        self.tbLabel_6.setStyleSheet(
            "#tbLabel_6 {color: #FFFFFF; font-size: 22px; font-family: Montserrat}")

        self.verticalLayout_3.addWidget(self.tbLabel_6)
        self.horizontalLayout_2.addWidget(self.tbWidget_5)
        self.tbWidget_3 = QtWidgets.QWidget(self.tbWidget_2)
        self.tbWidget_3.setMinimumSize(QtCore.QSize(90, 40))
        self.tbWidget_3.setMaximumSize(QtCore.QSize(90, 40))
        self.tbWidget_3.setStyleSheet("QPushButton{\n"
                                      "    background-color:rgba(0, 0, 0, 0);\n"
                                      "    color:rgb(255, 255, 255);\n"
                                      "    border-radius:1px;\n"
                                      "    font-size:18px;\n"

                                      # ----> "    font-family:dripicons-v2;\n"                        # <---- убрал

                                      "}\n"
                                      "QPushButton:hover{\n"
                                      "    background-color:rgb(49, 48, 53);\n"
                                      "}\n"
                                      "QPushButton#closeButton:hover{\n"
                                      "    background-color:rgb(232, 17, 35);\n"
                                      "}\n"
                                      "QPushButton:pressed{\n"
                                      "    padding-top:5px;\n"
                                      "    padding-left:5px;\n"
                                      "}")
        self.tbWidget_3.setObjectName("tbWidget_3")
        self.gridLayout = QtWidgets.QGridLayout(self.tbWidget_3)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")

        self.closeButton = QtWidgets.QPushButton(self.tbWidget_3)

        font = QtGui.QFont()
        font.setFamily("Webdings")
        self.closeButton.setFont(font)

        self.closeButton.setMinimumSize(QtCore.QSize(30, 30))
        self.closeButton.setMaximumSize(QtCore.QSize(30, 30))
        self.closeButton.setObjectName("closeButton")
        self.gridLayout.addWidget(self.closeButton, 0, 2, 1, 1)

        self.buttonMaximum = QtWidgets.QPushButton(self.tbWidget_3)
        self.buttonMaximum.setMinimumSize(QtCore.QSize(30, 30))
        self.buttonMaximum.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("Webdings")
        self.buttonMaximum.setFont(font)
        self.buttonMaximum.setObjectName("buttonMaximum")
        self.gridLayout.addWidget(self.buttonMaximum, 0, 1, 1, 1)

        # !!! +++
        self.buttonNormal = QtWidgets.QPushButton(self.tbWidget_3)  # +++
        self.buttonNormal.setMinimumSize(QtCore.QSize(30, 30))
        self.buttonNormal.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("Webdings")
        self.buttonNormal.setFont(font)
        self.buttonNormal.setObjectName("buttonNormal")
        self.gridLayout.addWidget(self.buttonNormal, 0, 1, 1, 1)

        self.buttonMinimum = QtWidgets.QPushButton(self.tbWidget_3)
        self.buttonMinimum.setMinimumSize(QtCore.QSize(30, 30))
        self.buttonMinimum.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("Webdings")
        self.buttonMinimum.setFont(font)
        self.buttonMinimum.setObjectName("buttonMinimum")  # buttonMinimum tbPushButton
        self.gridLayout.addWidget(self.buttonMinimum, 0, 0, 1, 1)

        self.horizontalLayout_2.addWidget(self.tbWidget_3)
        self.verticalLayout.addWidget(self.tbWidget_2)

        self.retranslateUi(tbWidget)
        QtCore.QMetaObject.connectSlotsByName(tbWidget)

    def retranslateUi(self, tbWidget):
        _translate = QtCore.QCoreApplication.translate
        tbWidget.setWindowTitle(_translate("tbWidget", "Form"))

        self.buttonMinimum.setText(_translate("tbWidget", "0"))
        self.closeButton.setText(_translate("tbWidget", "r"))
        self.buttonMaximum.setText(_translate("tbWidget", "1"))
        self.buttonNormal.setText(_translate("tbWidget", "2"))  # +++


class TitleBar(QtWidgets.QWidget, Ui_tbWidget):
    def __init__(self, parent=None):
        super(TitleBar, self).__init__(parent)

        self.setupUi(self)

        self.buttonNormal.setVisible(False)
        self.parent = parent  # +++
        self.buttonMinimum.setFocusPolicy(QtCore.Qt.NoFocus)
        self.buttonMaximum.setFocusPolicy(QtCore.Qt.NoFocus)
        self.buttonNormal.setFocusPolicy(QtCore.Qt.NoFocus)
        self.closeButton.setFocusPolicy(QtCore.Qt.NoFocus)

        self.buttonMinimum.clicked.connect(self.parent.showMinimized)
        self.buttonMaximum.clicked.connect(self.parent.showMaximized)
        self.buttonNormal.clicked.connect(self.parent.showNormal)
        self.closeButton.clicked.connect(self.parent.close)

        self.parent.installEventFilter(self)

    def eventFilter(self, target, event):
        if isinstance(event, QWindowStateChangeEvent):
            if self.parent.isVisible() and not self.parent.isMinimized():
                # Скрыть кнопку максимизации, если ток максимален
                self.buttonMaximum.setVisible(not self.parent.isMaximized())
                self.buttonNormal.setVisible(self.parent.isMaximized())
        return super(TitleBar, self).eventFilter(target, event)


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.setCentralWidget(self.centralwidget)
        self.resize(1400, 900)

        def _downloadRequested(item):
            p.alert(f'Скачали что-то там {item.path()}',
                    'Запрошено скачивание', button='OK')
            item.accept()

        self.browser = QWebEngineView()
        self.browser.page().profile().downloadRequested.connect(_downloadRequested)
        self.browser.setUrl(QUrl("https://www.youtube.com/channel/UCuoYQKgS0_kebtTD-k1p3lQ"))

        # self.height = self.screenRect.height()
        # self.width = self.screenRect.width()

        # востановите
        self.setWindowFlags(  # QtCore.Qt.WindowStaysOnTopHint |
            QtCore.Qt.FramelessWindowHint)
        self.setWindowIcon(QIcon('miko.png'))
        # +++
        self.titleBar = TitleBar(self)

        layout = QtWidgets.QVBoxLayout(self.centralwidget)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        layout.addWidget(self.titleBar)
        layout.addWidget(self.browser)

        self.oldPos = self.pos()

        # !!! +++
        self.langs = ['ru_RU', 'uk_UK', 'be_BE', 'kz_KZ']  # !!! +++

    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()

    def mouseMoveEvent(self, event):
        if event.pos().y() > 40:
            return

        delta = QPoint(event.globalPos() - self.oldPos)
        self.move(self.x() + delta.x(), self.y() + delta.y())
        self.oldPos = event.globalPos()

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_F7:
            self.browser.setUrl(QUrl("https://www.youtube.com/channel/UCuoYQKgS0_kebtTD-k1p3lQ"))
        elif event.key() == QtCore.Qt.Key_F1:
            import webbrowser
            webbrowser.open('https://www.youtube.com/channel/UCuoYQKgS0_kebtTD-k1p3lQ')

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec())

Ответы (2 шт):

Автор решения: S. Nick

Я ничего не менял в вашем коде.

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка
Автор решения: S. Nick

Попробуйте так:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, QtWebEngineWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.browser = QtWebEngineWidgets.QWebEngineView()
        self.setCentralWidget(self.browser)

        self.tbNavigate = QtWidgets.QToolBar(orientation=QtCore.Qt.Horizontal)
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.tbNavigate)

        action_data = [
            ("Back", "next.svg", self.browser.back),
            ("Forward", "icone/next.png", self.browser.forward),
            (
                "Reload this page",
                "icone/baseline_refresh_black_18dp.png",
                self.browser.reload,
            ),
            ("Home", "icone/home (1).png", self.navigateHome),
        ]

        for text, icon_path, slot in action_data:
            icon = QtGui.QIcon()
            icon.addPixmap(
                QtGui.QPixmap(icon_path), QtGui.QIcon.Normal, QtGui.QIcon.Off
            )
            action = QtWidgets.QAction(text, icon=icon, triggered=slot, parent=self)
            self.tbNavigate.addAction(action)

        self.httpsicon = QtWidgets.QLabel()
        self.tbNavigate.addWidget(self.httpsicon)

        self.addressbar = QtWidgets.QLineEdit()
        self.addressbar.returnPressed.connect(self.navigate_to_url)
        self.tbNavigate.addWidget(self.addressbar)
        self.browser.urlChanged.connect(self.update_urlBar)

        self.browser.load(QtCore.QUrl("https://youtube.com"))
        global_settings = QtWebEngineWidgets.QWebEngineSettings.globalSettings()

        for attr in (
            QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled,
            QtWebEngineWidgets.QWebEngineSettings.FullScreenSupportEnabled,
        ):
            global_settings.setAttribute(attr, True)
        self.browser.page().fullScreenRequested.connect(self.FullscreenRequest)

    @QtCore.pyqtSlot()
    def navigateHome(self):
        self.browser.setUrl(QtCore.QUrl("https://www.youtube.com"))

    @QtCore.pyqtSlot()
    def navigate_to_url(self):
        q = QtCore.QUrl(self.addressbar.text())
        if not q.scheme():
            q.setScheme("https")
        self.browser.setUrl(q)

    @QtCore.pyqtSlot(QtCore.QUrl)
    def update_urlBar(self, url):
        pixmap = (
            QtGui.QPixmap("icone/ssl.png")
            if url.scheme() == "https"
            else QtGui.QPixmap("icone/lock.png")
        )
        self.httpsicon.setPixmap(pixmap)
        self.addressbar.setText(url.toString())
        self.addressbar.setCursorPosition(0)

    @QtCore.pyqtSlot("QWebEngineFullScreenRequest")
    def FullscreenRequest(self, request):
        request.accept()
        if request.toggleOn():
            self.browser.setParent(None)
            self.browser.showFullScreen()
        else:
            self.setCentralWidget(self.browser)
            self.browser.showNormal()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка