Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单击表格单元格时,如何在新窗口中打开QWebEngineView?_Python_Pyqt5_Qtablewidget_Qwebengineview - Fatal编程技术网

Python 单击表格单元格时,如何在新窗口中打开QWebEngineView?

Python 单击表格单元格时,如何在新窗口中打开QWebEngineView?,python,pyqt5,qtablewidget,qwebengineview,Python,Pyqt5,Qtablewidget,Qwebengineview,当单击QTableWidget单元格时,我试图在QWebEngineView窗口中打开Url 打开QWebEngineView的代码从“main”开始工作,但从QWidget的子类调用时,它不知何故不起作用。一个窗口在一瞬间出现,然后消失。控制台上未显示任何错误。任何建议都将不胜感激 class App(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout()

当单击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_())

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

def updateUiCellClick(self, row):
    self.web = QWebEngineView()
    self.web.load(QUrl('https://www.google.com'))
    self.web.show()
在构造函数中创建self.webs=[],并在web.show之后添加self.webs.appendweb