Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pyqt5 webbrowser中创建youtube视频的全屏模式_Python_Pyqt5 - Fatal编程技术网

Python 如何在pyqt5 webbrowser中创建youtube视频的全屏模式

Python 如何在pyqt5 webbrowser中创建youtube视频的全屏模式,python,pyqt5,Python,Pyqt5,我创建了webbrowser来在互联网上搜索 问题是,在youtube全屏网站上,我无法让它以我希望的方式全屏运行,但当我退出全屏模式时,我会得到两个窗口而不是一个,或者如果我被一个窗口卡住,我会删除QWebEngineView 我的PyQt5版本是5.13.2 我的代码在下面 from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtWebEngineWidge

我创建了webbrowser来在互联网上搜索

问题是,在youtube全屏网站上,我无法让它以我希望的方式全屏运行,但当我退出全屏模式时,我会得到两个窗口而不是一个,或者如果我被一个窗口卡住,我会删除QWebEngineView

我的PyQt5版本是5.13.2

我的代码在下面

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtPrintSupport import *
import os 
import sys 

# main window 
class MainWindow(QMainWindow): 

    # constructor 
    def __init__(self, *args, **kwargs): 
        super(MainWindow, self).__init__(*args, **kwargs) 

        # creating a tab widget 
        self.tabs = QTabWidget() 

        # making document mode true 
        self.tabs.setDocumentMode(True) 

        # adding action when double clicked 
        self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick) 

        # adding action when tab is changed 
        self.tabs.currentChanged.connect(self.current_tab_changed) 

        # making tabs closeable 
        self.tabs.setTabsClosable(True) 

        # adding action when tab close is requested 
        self.tabs.tabCloseRequested.connect(self.close_current_tab) 

        # making tabs as central widget 
        self.setCentralWidget(self.tabs) 

        # creating a status bar 
        self.status = QStatusBar() 

        # setting status bar to the main window 
        self.setStatusBar(self.status) 

        # creating a tool bar for navigation 
        navtb = QToolBar("Navigation") 

        # adding tool bar tot he main window 
        self.addToolBar(navtb) 

        # creating back action 
        back_btn = QAction("Back", self) 

        # setting status tip 
        back_btn.setStatusTip("Back to previous page") 

        # adding action to back button 
        # making current tab to go back 
        back_btn.triggered.connect(lambda: self.tabs.currentWidget().back()) 

        # adding this to the navigation tool bar 
        navtb.addAction(back_btn) 

        # similarly adding next button 
        next_btn = QAction("Forward", self) 
        next_btn.setStatusTip("Forward to next page") 
        next_btn.triggered.connect(lambda: self.tabs.currentWidget().forward()) 
        navtb.addAction(next_btn) 

        # similarly adding reload button 
        reload_btn = QAction("Reload", self) 
        reload_btn.setStatusTip("Reload page") 
        reload_btn.triggered.connect(lambda: self.tabs.currentWidget().reload()) 
        navtb.addAction(reload_btn) 

        # creating home action 
        home_btn = QAction("Home", self) 
        home_btn.setStatusTip("Go home") 

        # adding action to home button 
        home_btn.triggered.connect(self.navigate_home) 
        navtb.addAction(home_btn) 

        # adding a separator 
        navtb.addSeparator() 

        # creating a line edit widget for URL 
        self.urlbar = QLineEdit() 

        # adding action to line edit when return key is pressed 
        self.urlbar.returnPressed.connect(self.navigate_to_url) 

        # adding line edit to tool bar 
        navtb.addWidget(self.urlbar) 

        # similarly adding stop action 
        stop_btn = QAction("Stop", self) 
        stop_btn.setStatusTip("Stop loading current page") 
        stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop()) 
        navtb.addAction(stop_btn) 

        # creating first tab 
        self.add_new_tab(QUrl('http://www.google.com'), 'Homepage') 

        # showing all the components 
        self.show() 

        # setting window title 
        self.setWindowTitle("Aashra") 

    # method for adding new tab 
    def add_new_tab(self, qurl = None, label ="Blank", text = "New Tab"): 

        # if url is blank 
        if qurl is None: 
            # creating a google url 
            qurl = QUrl('http://www.google.com') 

        # creating a QWebEngineView object 
        browser = QWebEngineView() 

        # setting url to browser 
        browser.setUrl(qurl) 

        # setting tab index 
        i = self.tabs.addTab(browser, label) 
        self.tabs.setCurrentIndex(i) 

        # adding action to the browser when url is changed 
        # update the url 
        browser.urlChanged.connect(lambda qurl, browser = browser: 
                                self.update_urlbar(qurl, browser)) 

        # adding action to the browser when loading is finished 
        # set the tab title 
        browser.loadFinished.connect(lambda _, i = i, browser = browser: 
                                    self.tabs.setTabText(i, browser.page().title())) 

    # when double clicked is pressed on tabs 
    def tab_open_doubleclick(self, i): 

        # checking index i.e 
        # No tab under the click 
        if i == -1: 
            # creating a new tab 
            self.add_new_tab() 

    # wen tab is changed 
    def current_tab_changed(self, i): 

        # get the curl 
        qurl = self.tabs.currentWidget().url() 

        # update the url 
        self.update_urlbar(qurl, self.tabs.currentWidget()) 

        # update the title 
        self.update_title(self.tabs.currentWidget()) 

    # when tab is closed 
    def close_current_tab(self, i): 

        # if there is only one tab 
        if self.tabs.count() < 2: 
            # do nothing 
            return

        # else remove the tab 
        self.tabs.removeTab(i) 

    # method for updating the title 
    def update_title(self, browser): 

        # if signal is not from the current tab 
        if browser != self.tabs.currentWidget(): 
            # do nothing 
            return

        # get the page title 
        title = self.tabs.currentWidget().page().title() 

    # action to go to home 
    def navigate_home(self): 

        # go to google 
        self.tabs.currentWidget().setUrl(QUrl("http://www.google.com")) 

    # method for navigate to url 
    def navigate_to_url(self): 

        # get the line edit text 
        # convert it to QUrl object 
        q = QUrl(self.urlbar.text()) 

        # if scheme is blank 
        if q.scheme() == "": 
            # set scheme 
            q.setScheme("http") 

        # set the url 
        self.tabs.currentWidget().setUrl(q) 

    # method to update the url 
    def update_urlbar(self, q, browser = None): 
        # If this signal is not from the current tab, ignore 
        if browser != self.tabs.currentWidget(): 
            return

        # set text to the url bar 
        self.urlbar.setText(q.toString()) 

        # set cursor position 
        self.urlbar.setCursorPosition(0)

        def _downloadRequested(item): # QWebEngineDownloadItem
            print('downloading to', item.path())
            item.accept()

        browser.page().profile().downloadRequested.connect(_downloadRequested) 

# creating a PyQt5 application 
app = QApplication(sys.argv) 

# setting name to the application 
app.setApplicationName("Aashra") 

# creating MainWindow object 
window = MainWindow() 

# loop 
app.exec_()
从PyQt5.QtCore导入*
从PyQt5.QtWidgets导入*
从PyQt5.QtGui导入*
从PyQt5.QtWebEngineWidgets导入*
从PyQt5.QtPrintSupport导入*
导入操作系统
导入系统
#主窗口
类主窗口(QMainWindow):
#建造师
定义初始化(self,*args,**kwargs):
超级(主窗口,自我)。\uuuuu初始化(*args,**kwargs)
#创建选项卡小部件
self.tabs=QTabWidget()
#使文档模式为真
self.tabs.setDocumentMode(True)
#双击时添加操作
self.tabs.tabBarDoubleClicked.connect(self.tab\u open\u双击)
#更改选项卡时添加操作
self.tabs.currentChanged.connect(self.current\u tab\u changed)
#使标签可关闭
self.tabs.setTabsClosable(True)
#请求关闭选项卡时添加操作
self.tabs.tabCloseRequested.connect(self.close\u current\u选项卡)
#使选项卡成为中心小部件
self.setCentralWidget(self.tabs)
#创建状态栏
self.status=QStatusBar()
#将状态栏设置到主窗口
self.setStatusBar(self.status)
#创建用于导航的工具栏
navtb=QToolBar(“导航”)
#将工具栏添加到主窗口
self.addToolBar(navtb)
#创建反向操作
后退\u btn=QAction(“后退”,自我)
#设置状态提示
back_btn.setstatistip(“返回上一页”)
#向后退按钮添加操作
#使当前选项卡返回
back\u btn.triggered.connect(lambda:self.tabs.currentWidget().back())
#将其添加到导航工具栏
navtb.addAction(返回btn)
#类似地,添加“下一步”按钮
下一步\u btn=QAction(“向前”,自我)
下一页【btn.setStatusTip】(“转发到下一页”)
next_btn.triggered.connect(lambda:self.tabs.currentWidget().forward())
navtb.addAction(下一步)
#类似地添加重新加载按钮
重新加载\u btn=QAction(“重新加载”,自我)
重新加载设置状态(“重新加载页面”)
重新加载触发的连接(lambda:self.tabs.currentWidget().reload())
navtb.addAction(重新加载\u btn)
#创建家庭行动
主页\u btn=QAction(“主页”,自我)
主页(btn.setStatusTip)(“回家”)
#向主页按钮添加操作
主页\u btn.已触发。连接(自导航\u主页)
navtb.addAction(主页\u btn)
#添加分隔符
navtb.addSeparator()
#为URL创建行编辑小部件
self.urlbar=QLineEdit()
#按下回车键时向行编辑添加操作
self.urlbar.returnPressed.connect(self.navigate\u至\u url)
#向工具栏添加线编辑
navtb.addWidget(self.urlbar)
#类似地,添加停止动作
停止\u btn=QAction(“停止”,自我)
停止设置状态(“停止加载当前页面”)
停止触发连接(lambda:self.tabs.currentWidget().stop())
navtb.addAction(停止\u btn)
#创建第一个选项卡
自我添加新选项卡(QUrl('http://www.google.com","网页")
#显示所有组件
self.show()
#设置窗口标题
self.setWindowTitle(“Aashra”)
#添加新选项卡的方法
def add_new_选项卡(self,qurl=None,label=“Blank”,text=“new tab”):
#如果url为空
如果qurl为无:
#创建google url
qurl=qurl('http://www.google.com') 
#创建QWebEngineView对象
browser=QWebEngineView()
#将url设置为浏览器
browser.setUrl(qurl)
#设置选项卡索引
i=self.tabs.addTab(浏览器、标签)
self.tabs.setCurrentIndex(一)
#更改url时向浏览器添加操作
#更新url
browser.urlChanged.connect(lambda-qurl,browser=browser:
self.update_urlbar(qurl,浏览器))
#加载完成时向浏览器添加操作
#设置选项卡标题
browser.loadFinished.connect(lambda,i=i,browser=browser:
self.tabs.setTabText(i,browser.page().title())
#在选项卡上按双击时
def选项卡_打开_双击(自我,i):
#检查索引,即
#单击菜单下没有选项卡
如果i==-1:
#创建新选项卡
self.add_new_tab()
#文选项卡已更改
def当前选项卡已更改(自我,i):
#卷发
qurl=self.tabs.currentWidget().url()
#更新url
self.update\u urlbar(qurl,self.tabs.currentWidget())
#更新标题
self.update\u标题(self.tabs.currentWidget())
#当选项卡关闭时
def close_当前_选项卡(自我,i):
#如果只有一个选项卡
如果self.tabs.count()小于2:
#无所事事
返回
#否则,请移除选项卡
自拆选项卡(i)
#更新标题的方法
def更新标题(自我、浏览器):
#如果信号不是来自当前选项卡
如果是浏览器!=self.tabs.currentWidget():
#无所事事
返回
#获取页面标题
title=self.tabs.currentWidget().page().title()
#回家的行动
def导航_主页(自我):
#去谷歌
self.tabs.currentWidget().setUrl(QUrl(“http://www.google.com")) 
#n的方法