2016-04-26 187 views
0

我需要制作一个非常简单的web浏览器,用python包装。我正在使用pyQt4。我可以很容易地创建一个小浏览器来加载网页,几乎一切正常。我遇到的问题是访问摄像头不起作用。导航到任何尝试访问网络摄像头的URL(通过javascript getUserMedia())都不会执行任何操作。甚至不提示用户选择网络摄像头设备。pyQT4 Web浏览器Python授予权限(网络摄像头)

这是为什么?

我该如何授予使用网络摄像头使用简单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

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

我不认为它完全支持WebRTC,您可能想升级到PyQt5并使用QtWebEngine代替。

+0

好的,我应该使用PyQt5。你知道任何一个非常简单的浏览器的好教程,就像我上面的PyQt4一样吗?谢谢 – alexward1230