我有一个应用程序,它的左侧是 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()

试试这个代码
Aleksandr Fetisov 提出了一个解决方案,但 open_files 函数以这种方式陈述会更正确(以便有可视化)