pyQT4 Web浏览器Python授予权限(网络摄像头)

时间:2016-04-26 03:41:23

标签: permissions pyqt pyqt4 webcam pyqt5

我需要创建一个用python包装的非常简单的Web浏览器。我正在使用pyQt4。我可以很轻松地创建一个小浏览器来加载网页,几乎一切正常。我遇到的问题是访问网络摄像头不起作用。导航到任何尝试访问网络摄像头的网址(通过javascript getUserMedia())都不会做任何事情。甚至没有提示用户选择网络摄像头设备。

为什么会这样?

如何通过简单的pyQT4 python程序授予使用网络摄像头的权限?

这是我到目前为止所做的:

from PyQt4 import QtCore, QtGui, QtWebKit


class myWindow(QtWebKit.QWebView):
    def __init__(self, parent=None):
        super(myWindow, self).__init__(parent)

        #self.page().mainFrame().addToJavaScriptWindowObject("myWindow", self)

        self.loadFinished.connect(self.on_loadFinished)

        self.page().featurePermissionRequested.connect(self.permissionRequested)

        self.load(QtCore.QUrl('https://pubnub.com/developers/demos/webrtc'))


    @QtCore.pyqtSlot()
    def on_loadFinished(self):
        #self.page().mainFrame().evaluateJavaScript(getJsValue)

    def permissionRequested(self, frame, feature):
        self.page().setFeaturePermission(frame, feature, QWebPage.PermissionGrantedByUser)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('myWindow')

    main = myWindow()
    main.show()

    sys.exit(app.exec_())

此代码加载一个webrtc演示,该演示应立即提示进行网络摄像头访问。但事实并非如此。所有要求网络摄像头权限的网站都不起作用。

注意: 我尝试定义权限请求,然后授予访问权限。但是,它仍然没有做任何事情。我可能在这里做错了什么?

感谢您提供的任何帮助。欣赏它。

1 个答案:

答案 0 :(得分:1)

QtWebKit仅支持Geolocation and Notifications作为权限请求。

我根本不认为它支持WebRTC,您可能希望升级到PyQt5并改为使用QtWebEngine