Правильно отображать QPdfView внутри QLayout в PyQt6 ⇐ Python
-
Гость
Правильно отображать QPdfView внутри QLayout в PyQt6
Я пытаюсь использовать QPdfView внутри простого приложения PyQt6. У меня есть два образца, один работает, другой нет. В первом примере PDF-файл отображается правильно, но он бесполезен, поскольку загружается в базовом виде, который не является частью макета. Когда я пытаюсь поместить представление внутри макета, PDF-файл отображается только как серый экран. Мне нужна помощь в том, как правильно отображать PDF-файл внутри макета, чтобы я мог включить его в более крупное приложение.
Пример, который работает:
импортировать ОС импортировать систему из PyQt6 импортировать QtWidgets из PyQt6.QtPdf импортировать QPdfDocument из PyQt6.QtPdfWidgets импортировать QPdfView приложение = QtWidgets.QApplication(sys.argv) file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.pdf")) документ = QPdfDocument (нет) document.load(путь_файла) просмотр = QPdfView (нет) view.setPageMode(QPdfView.PageMode.MultiPage) view.setDocument(документ) просмотр.шоу() приложение.exec() Пример, который не работает:
импортировать ОС из PyQt6.QtPdf импортировать QPdfDocument из PyQt6.QtPdfWidgets импортировать QPdfView из импорта PyQt6.QtWidgets * класс MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.pdf")) документ = QPdfDocument (нет) document.load(путь_файла) просмотр = QPdfView (нет) view.setPageMode(QPdfView.PageMode.MultiPage) view.setDocument(документ) макет = QVBoxLayout() макет.addWidget(просмотр) виджет = QWidget() виджет.setLayout(макет) self.setCentralWidget(виджет) себя.шоу() приложение = QApplication([]) окно = ГлавноеОкно() приложение.exec() Я новичок в PyQT и предполагаю, что что-то не так с макетом и тем, как QPdfView наследует параметры макета, но я в растерянности. Может ли кто-нибудь объяснить, как получить второй образец кода для визуализации PDF-файла? Я действительно не хочу использовать маршрут WebView для отображения PDF-файла и надеялся, что объекты QPdfView и QDocument будут работать.
Я пытаюсь использовать QPdfView внутри простого приложения PyQt6. У меня есть два образца, один работает, другой нет. В первом примере PDF-файл отображается правильно, но он бесполезен, поскольку загружается в базовом виде, который не является частью макета. Когда я пытаюсь поместить представление внутри макета, PDF-файл отображается только как серый экран. Мне нужна помощь в том, как правильно отображать PDF-файл внутри макета, чтобы я мог включить его в более крупное приложение.
Пример, который работает:
импортировать ОС импортировать систему из PyQt6 импортировать QtWidgets из PyQt6.QtPdf импортировать QPdfDocument из PyQt6.QtPdfWidgets импортировать QPdfView приложение = QtWidgets.QApplication(sys.argv) file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.pdf")) документ = QPdfDocument (нет) document.load(путь_файла) просмотр = QPdfView (нет) view.setPageMode(QPdfView.PageMode.MultiPage) view.setDocument(документ) просмотр.шоу() приложение.exec() Пример, который не работает:
импортировать ОС из PyQt6.QtPdf импортировать QPdfDocument из PyQt6.QtPdfWidgets импортировать QPdfView из импорта PyQt6.QtWidgets * класс MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.pdf")) документ = QPdfDocument (нет) document.load(путь_файла) просмотр = QPdfView (нет) view.setPageMode(QPdfView.PageMode.MultiPage) view.setDocument(документ) макет = QVBoxLayout() макет.addWidget(просмотр) виджет = QWidget() виджет.setLayout(макет) self.setCentralWidget(виджет) себя.шоу() приложение = QApplication([]) окно = ГлавноеОкно() приложение.exec() Я новичок в PyQT и предполагаю, что что-то не так с макетом и тем, как QPdfView наследует параметры макета, но я в растерянности. Может ли кто-нибудь объяснить, как получить второй образец кода для визуализации PDF-файла? Я действительно не хочу использовать маршрут WebView для отображения PDF-файла и надеялся, что объекты QPdfView и QDocument будут работать.
Мобильная версия