Как на Python сделать так, чтобы при нажатии на строку QTreeView появлялся файл в QtWebEngineWidgets.QWebEngineView?
У меня есть приложение, в котором слева располагается QTreeView, а справа - QtWebEngineWidgets.QWebEngineView. При нажатии на строку в QTreeView появляется ошибка. Пожалуйста, помогите с вопросом: как сделать так, чтобы по клику в QTreeView документ отображался в QtWebEngineWidgets.QWebEngineView? Раумеется, ошибка в строке self.tree.doubleClicked.connect(self.Open_files), но я не знаю как правильно написать код
from PyQt5 import QtCore, QtWidgets
from PyQt5.Qt import (
QApplication, QWidget, QTreeView,
QFileSystemModel, QDir)
from PyQt5 import QtWebEngineWidgets
import os
class MyWidget(QWidget):
global Open_files
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Direct tree')
self.model = QFileSystemModel()
self.model.setRootPath(QDir.rootPath())
self.tree = QTreeView()
self.tree.setModel(self.model)
self.tree.setRootIndex(self.model.index(os.getcwd()))
self.tree.doubleClicked.connect(self.Open_files)
self.tree.setAnimated(False)
self.tree.setIndentation(20)
self.tree.setSortingEnabled(True)
grid = QtWidgets.QGridLayout()
grid.setColumnStretch(0, 0)
self.setLayout(grid)
grid.addWidget(self.tree, 0, 0)
grid.addWidget(Open_files(), 0, 1)
class Open_files(QtWebEngineWidgets.QWebEngineView):
def __init__(self):
super().__init__()
file_name = self.model.filePath(self)
self.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled, True)
self.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.PdfViewerEnabled, True)
self.load(QtCore.QUrl.fromUserInput(file_name))
class app:
app = QApplication([])
win = MyWidget()
win.resize(2200, 1200)
win.show()
app.exec()
Источник: Stack Overflow на русском