1

質問するのはこれが初めてです。何か間違っていることがあれば教えてください。よろしくお願いします。

カスタム URL に QWebEngineUrlSchemeHandler を使用しており、QFile を使用してテスト用の JavaScript ファイルを開きたいと考えています。

まず、私がちょうど使用する場合

QFile("ken.js")

ウィンドウは JavaScript を開くことができますが、カスタム QFile を使用すると、QIODevice.read() から読み取った後にデータを処理する方法がわかりません。

QIODevice.read() からデータを読み取った後、ウィンドウで javascript を開くために必要なことを知りたいです。

いくつか提案してください、ありがとう。

これが私の完全なコードです。

class TestQFile(QtCore.QFile):
    def __init__(self, fileName):
        super().__init__()
        self.setFileName(fileName)
        self.open(self.ReadOnly)

        self.data = b''

        while True:
            receivedData = self.read(10)
            self.data += receivedData
            if receivedData == b'':
                break

class TestHandler(QWebEngineUrlSchemeHandler):
    def requestStarted(self, request):
        self._dev = TestQFile("ken.js")
        request.reply(b'text/javascript', self._dev)


class TestWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self._view = QWebEngineView(self)
        self._handler = TestHandler() # Must keep ref
        self._view.page().profile().installUrlSchemeHandler(b'myuri', self._handler)
        self._view.setHtml('<html><head><title>Test</title></head><body><div id="d1"></div><script src="myuri://test/ken.js"></script></body></html>')
        self.setCentralWidget(self._view)
        self.show()
        self.raise_()

if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    win = TestWindow()
    app.exec_()
4

1 に答える 1