Пустое окно PyQt5 QWebEngineView

У меня есть достаточно сложное приложение, которое работает нормально. После обновления системы с Debian 11 до 12 компонент QWebEngineView показывает пустой экран (просто белое окно). Это работает внутри виртуальной среды, управляемой Poetry. Все пакеты внутри среды имеют последнюю версию. Все остальное в приложении работает без проблем.

Тестовый пример показан ниже. При запуске в системе Debian 12 с установленными собственными пакетами (без venv) тестовый пример работает нормально.

Когда это не удается, нет ни вывода, ни ошибок, ничего. Я даже не знаю, как это диагностировать.

#!/usr/bin/env python3
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl

html = """
<!DOCTYPE html>
<html>
<body>
    <h1>Test</h1>
</body>
</html>
"""

app = QApplication(sys.argv)

web = QWebEngineView()

web.setHtml(html)

web.show()

sys.exit(app.exec_())

ОБНОВЛЕНИЕ: я изменил тело тестового примера следующим образом:

app = QApplication(sys.argv)


def loadstart():
    print("load started")


def loadfin():
    print("load end")


def loadprog(n):
    print(f"progress {n=}")


web = QWebEngineView()

web.loadStarted.connect(loadstart)
web.loadFinished.connect(loadfin)
web.loadProgress.connect(loadprog)

В рабочей среде:

$ ./web.py 
load started
progress n=0
progress n=20
progress n=100
load end

В неудачной среде:

$ ./web.py 
load started
progress n=0
progress n=100

Таким образом, в рабочей среде есть сигнал, вызываемый при нагрузке 20%, которого нет в сбойной среде; кроме того, сбойная среда достигает 100%, но никогда не вызывает loadFinished

Все еще пытаюсь понять, что происходит...

Вы по-прежнему не получаете вывода даже при запуске кода из терминала?

musicamante 03.04.2023 20:11

Нет, ничего. Я только что добавил web.setStyleSheet("background-color: red") непосредственно перед строкой setHtml, и теперь окно отображается красным, поэтому отображается виджет QWebEngineView: он просто не отображает никакого содержимого.

backseat 03.04.2023 20:42

Я полагаю, что в Debian требуется тег «название». Может быть было возбуждено исключение

Andrey Zobov 04.04.2023 11:04

@AndreyZobov и рабочая, и нерабочая системы — это Debian. Никаких исключений не возникает.

backseat 04.04.2023 19:01

Хорошо. Проверьте сигнал renderProcessTerminated(). ... def render_process_terminated (termination_type, exit_code): print (f'{termination_type =}, {exit_code =}') ... web.renderProcessTerminated.connect (render_process_terminate‌​d) ...

Andrey Zobov 06.04.2023 15:58

Спасибо Андрей. Рабочая версия не дает вывода (как и ожидалось); неудачный дает termination_type=2, exit_code=31. Как я могу решить эту проблему?

backseat 06.04.2023 19:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ из списка рассылки PyQt:

Похоже на эту проблему: https://bugreports.qt.io/browse/QTBUG-103969

Двоичный дистрибутив 5.15.2 не работает с более новой версией glibc. версии.

Единственные обходные пути, о которых я знаю, это пройти --disable-seccomp-filter-sandbox в качестве одного из аргументов для QApplication или для использования более новой версии WebEngine.

Другие вопросы по теме