PySide6 QOpenGLWidget мерцает даже при минимальном примере внутри макетаPython

Программы на Python
Ответить
Anonymous
 PySide6 QOpenGLWidget мерцает даже при минимальном примере внутри макета

Сообщение Anonymous »

У меня возникает мерцание при использовании QOpenGLWidget с PySide6, даже при минимальной настройке.
Среда:
  • PySide6 (проверено с версиями 6.5/6.6)
  • Python 3.x
  • ОС: Linux/Windows (происходит в нескольких системах)
  • Драйверы графического процессора: стандартные системные драйверы
Минимальный воспроизводимый пример:

Код: Выделить всё

import sys
from PySide6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout
)
from PySide6.QtOpenGLWidgets import QOpenGLWidget
from PySide6.QtGui import QSurfaceFormat
from PySide6.QtCore import Qt

class GLWidget(QOpenGLWidget):
def initializeGL(self):
pass

def resizeGL(self, w, h):
pass

def paintGL(self):
pass

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

central = QWidget()
layout = QVBoxLayout(central)

self.gl = GLWidget()
layout.addWidget(self.gl)

self.setCentralWidget(central)
self.resize(800, 600)

if __name__ == "__main__":
app = QApplication(sys.argv)

# Explicit OpenGL format
fmt = QSurfaceFormat()
fmt.setRenderableType(QSurfaceFormat.OpenGL)
fmt.setProfile(QSurfaceFormat.CoreProfile)
fmt.setVersion(3, 3)
fmt.setSwapBehavior(QSurfaceFormat.DoubleBuffer)
QSurfaceFormat.setDefaultFormat(fmt)

w = MainWindow()
w.show()

sys.exit(app.exec())
Настройка следующая:
  • QMainWindow
  • Центральный QWidget с QVBoxLayout
  • Один QOpenGLWidget
  • Нет таймеров
  • Нет рисования OpenGL вообще
Несмотря на это, окно мерцает при изменении размера или иногда даже в режиме ожидания.
Что я пробовал:
  • Явный QSurfaceFormat с двойной буферизацией
  • Основной профиль OpenGL
  • Отключение обновлений
  • Без перерисовки()/

    Код: Выделить всё

    update()
    вызывает
Каков правильный или рекомендуемый способ встроить QOpenGLWidget в макет с использованием PySide6 без мерцания?
Известна ли это проблема с привязками QOpenGLWidget, PySide6 или некоторыми оконными системами (X11/Wayland/Windows)?
Будем признательны за любые рекомендации или минимальную рабочую конфигурацию.

Подробнее здесь: https://stackoverflow.com/questions/798 ... e-a-layout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»