PyQt5 在浏览器页面上添加文本

PyQt5 add text over browser page

我想做一个简单的浏览器,但有一个区域(标签),我在一个角落里显示时间和日期在实际加载的网页上。

我目前在状态栏中显示文本,但我更愿意去掉它,让文本在浏览器中持续显示。

这是我的代码,运行良好,我只是不知道如何在当前显示的 browser/page 之上永久添加文本。见附图:

class WebEnginePage(QWebEnginePage):
    def createWindow(self, _type):
        page = WebEnginePage(self)
        page.urlChanged.connect(self.on_url_changed)
        return page

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.browser = QWebEngineView()
        self.browser.setContextMenuPolicy(Qt.PreventContextMenu)
        page = WebEnginePage(self.browser)
        self.browser.setPage(page)
        self.setCentralWidget(self.browser)
        self.showMaximized()
        self.date = QDate.currentDate()
        self.browser.load(QUrl("http://whosebug.com"))

        timer = QTimer(self)
        timer.timeout.connect(self.showTime)
        timer.start(100)

        font =  QFont('Arial', 16, QFont.Bold)
        self.statusBar().setFont(font)

        self.show()

    def showTime(self):
        current_time = QTime.currentTime()
        label_time = current_time.toString('hh:mm')
        self.statusBar().showMessage('Time: ' + label_time + ' || Date: ' + self.date.toString('dd.MM.yyyy'))
           
def main():
    app = QApplication(sys.argv)
    QApplication.setApplicationName('TEST')
    window = MainWindow()
    app.exec_()

if __name__ == '__main__':
    sys.exit(main())

如果您想在 QWebEngineView 上放置一个小部件,那么一个可能的解决方案是使它成为 window 的子对象并使用 raise 使其位于顶部:

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.browser = QWebEngineView()
        self.browser.setContextMenuPolicy(Qt.PreventContextMenu)
        page = WebEnginePage(self.browser)
        self.browser.setPage(page)
        self.setCentralWidget(self.browser)
        self.showMaximized()
        self.browser.load(QUrl("http://whosebug.com"))

        timer = QTimer(self)
        timer.timeout.connect(self.showTime)
        timer.start(100)

        self.label = QLabel(self)
        self.label.setStyleSheet("QLabel {color : black; }")
        self.label.move(10, 10)
        self.label.show()
        self.label.raise_()
        font = QFont("Arial", 16, QFont.Bold)
        self.label.setFont(font)

        self.show()

    def showTime(self):
        self.label.setText(
            "Time: "
            + QTime.currentTime().toString("hh:mm")
            + " || Date: "
            + QDate.currentDate().toString("dd.MM.yyyy")
        )
        self.label.adjustSize()