首页 > 解决方案 > 单击表格单元格时如何在新窗口中打开QWebEngineView?

问题描述

单击 QTableWidget 单元格时,我试图在 QWebEngineView 窗口中打开一个 Url。

打开 QWebEngineView 的代码从“ main ”工作,但不知何故,当从 QWidget 的子类调用时它不起作用。一个窗口出现片刻,然后消失。控制台上没有显示错误。任何建议将不胜感激。

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout()
        self.Aplayers = [[14, 134, 13], [11, 144, 13]]
        self.tableWidget = QTableWidget(len(self.Aplayers), 3)
        self.setWindowTitle('Game Stats')
        self.setGeometry(0, 0, 600, 400)
        self.layout.addWidget(self.tableWidget)
        self.setLayout(self.layout)
        self.setData(self.Aplayers, self.tableWidget)
        self.tableWidget.itemClicked.connect(self.updateUiCellClick)
        self.show()


    def setData(self, players, tbl: QTableWidget):
        index = -1
        for row in players:
            index += 1
            tbl.setItem(index, 0, QTableWidgetItem(str(row[1])))
            tbl.setItem(index, 1, QTableWidgetItem(str(row[2])))
            tbl.setItem(index, 2, QTableWidgetItem(str(row[0])))

    def updateUiCellClick(self, row):
        web = QWebEngineView()
        web.load(QUrl('https://www.google.com'))
        web.show()


if __name__ == '__main__':
    app = None
    app = QApplication(sys.argv)
    mainWidget = App()
    sys.exit(app.exec_())

标签: pythonpyqt5qtablewidgetqwebengineview

解决方案


QWebEngineView 仅在该函数的本地范围内可用,因此在函数返回后它会立即消失。如果您self.web改为调用它,它将起作用,因为应用程序将保留指向 Web 引擎视图的指针。

def updateUiCellClick(self, row):
    self.web = QWebEngineView()
    self.web.load(QUrl('https://www.google.com'))
    self.web.show()

推荐阅读