python - 单击表格单元格时如何在新窗口中打开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_())
解决方案
QWebEngineView 仅在该函数的本地范围内可用,因此在函数返回后它会立即消失。如果您self.web
改为调用它,它将起作用,因为应用程序将保留指向 Web 引擎视图的指针。
def updateUiCellClick(self, row):
self.web = QWebEngineView()
self.web.load(QUrl('https://www.google.com'))
self.web.show()
推荐阅读
- java - 让多个 DatagramChannel 在一个端口上工作的最佳方法
- database - 与 Oracle 12C 相比,Oracle18C 中的查询需要更长的时间
- python - ElementTree findall() 永远找不到第一个孩子
- c# - 为什么 C# decimal ToString 不请求文化和货币?
- python - 禁用 pytest 插件在本地工作,在 CI 上不起作用
- javascript - 如何将嵌套数组转换为普通数组并更改类型?
- angular - 不使用本地存储或 cookie 的 Angular 身份验证保护
- c# - 将 Telerik RadGrid 导出为 PDF
- node.js - 原型上的Sinon存根,检查调用它的实际实例的值
- python - Numpy按多个向量分组,获取组索引