다운로드를 허용하지만 인터넷에 무언가를 업로드하는 모든 방법을 사용할 수 없게하는 브라우저를 개발하려고합니다. PyQt5로 브라우저를 개발했지만 FileDialog를 비활성화하는 방법을 알아낼 수 없습니다 (예 : Gmail에서 첨부 파일을 클릭하면 클릭). LocalContentCanAccessRemoteUrls 및 LocalContentCanAccessFileUrls와 같은 설정을 다른 플래그로 비활성화하는 설정을 이미했습니다. 나는 또한 QWebEnginePage를 서브 클래스 화하고 "chooseFile"함수를 수정했다. 아래에서 내 코드 here you can find the UI and resources file을 볼 수 있습니다.QWebEngineView에서 QFileDialog 액세스 사용 안 함
# Python import
import sys
# PYQT Imports
from PyQt5 import QtCore, QtGui, QtWidgets, QtWebEngineWidgets
# from QtWebEngineWidgets.QWebEngineView import QWebEngineView
# UI IMPORT
import UI_Sailor
class WebPage(QtWebEngineWidgets.QWebEnginePage):
def chooseFile(self, frame=None, path=''):
print ('Called this')
return
class Sailor(QtWidgets.QMainWindow, UI_Sailor.Ui_Sailor):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
# self.setWindowIcon(QtGui.QIcon(':/Icons/Icons/Icon_Small.png'))
self.setWindowTitle('Sailor - 1.0.0')
glob_settings = QtWebEngineWidgets.QWebEngineSettings.globalSettings()
self.setWebSettings(glob_settings)
self.create_connections()
def setWebSettings(self, object_settings):
print ('Called')
# Global web settings
object_settings.setAttribute(1, True) # JaveScript
object_settings.setAttribute(3, False) # Clipboard (JaveScript)
object_settings.setAttribute(5, False) # Local Storage
object_settings.setAttribute(6, False) # LocalContentCanAccessRemoteUrls
object_settings.setAttribute(7, False) # XSSAuditingEnabled
object_settings.setAttribute(9, False) # LocalContentCanAccessFileUrls
object_settings.setAttribute(11, True) # ScrollAnimatorEnabled
object_settings.setAttribute(14, True) # FullScreenSupportEnabled
# Check that the options are applied
# print (object_settings.testAttribute(1)) # JaveScript
# print (object_settings.testAttribute(2)) # JaveScript
# print (object_settings.testAttribute(3)) # Clipboard (JaveScript)
# print (object_settings.testAttribute(5)) # Local Storage
# print (object_settings.testAttribute(6)) # LocalContentCanAccessRemoteUrls
# print (object_settings.testAttribute(7)) # XSSAuditingEnabled
# print (object_settings.testAttribute(9)) # LocalContentCanAccessFileUrls
# print (object_settings.testAttribute(11)) # ScrollAnimatorEnabled
# print (object_settings.testAttribute(14)) # FullScreenSupportEnabled
def create_connections(self):
self.TXT_Address.returnPressed.connect(self.web_load_url)
# self.WEB_View.urlChanged.connect(self.debug)
def web_load_url(self):
# Creates the proper url
url_base = str(self.TXT_Address.text())
url_clean = self.url_handler(url_base)
# Loads the url
# self.WEB_View.setUrl(QtCore.QUrl(url_clean))
self.WEB_View.setPage(WebPage(self.WEB_View))
self.WEB_View.load(QtCore.QUrl(url_clean))
self.setWebSettings(self.WEB_View.settings())
def debug(self):
print ('called')
def url_handler(self, url):
if 'http' not in url:
return 'http://{}'.format(url)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
form = Sailor()
form.show()
app.exec_()