Im ищет способ свести к минимуму перерисовывание «мерцания» на моем приложении pyQt.pyQt QWidget 'flicker' on resize and redraw
Мое приложение - это QMainWindow, содержащий два объекта, созданных QDockWidget (и обычный ассортимент меню инструментов и статусных баров). Один из QDockWidgets * использует QGridLayout для организации ряда окон, построенных на основе QGLWidget, в каждом элементе grid.
Когда я изменяю размер MainWindow, вся компоновка правильно изменяется. Тем не менее, в пространстве между QGLWidgets я вижу, что выглядит частично частично визуализированным странным видом некоторой части MainWindow 'flick' в поле зрения в течение секунды секунды, а затем визуализируется правильно. Мое приложение обычно окрашено в темные стили, но мерцание между QGLWidgets обычно просто белое и черное. Чем быстрее я перетаскиваю границы Mainwindow, тем сильнее это мерцание. И позвольте мне подчеркнуть, «мерцание» находится только на заднем плане и между объектами QGLWidget, все остальное кажется прекрасным.
Мерцание есть ли у меня что-либо, окрашенное в QGLWidgets, или нет, поэтому на рендеринг нет большой нагрузки.
Есть ли что-то, что я могу сделать, чтобы устранить это мерцание при перерисовке (и изменении размера) событий?
Я пробовал раскрашивать все виджеты темного темного цвета, играя с .hide() и .show() на некоторых виджетах, но они просто замедляют процесс и делают его хуже.
- ПРИМЕЧАНИЕ Я обнаружил, что положить фиктивный QWidget в QDockWidget как QDockWidget не будет принимать (я предполагаю, что он не поддерживает) раскладки. Может быть, это как-то связано с этим.
Это с PyQt 4.10.1 для питона 2.7 работает на Windows 7. У меня есть около опыта месяцев с PyQt
Звуки очень похожи на [QTBUG-17869] (https://bugreports.qt.io/browse/QTBUG-17869) и [QTBUG-38327] (https://bugreports.qt.io/browse/QTBUG-38327). – ekhumoro
Я просмотрел эти сообщения об ошибках, спасибо, выглядит как та же ошибка, что и моя, и связана с QGLWidget. Очень неприятно! Создается впечатление, что ошибка исправлена в pyQt5 и рекомендуется использовать QOpenGLWidget. Я не слишком хочу переходить на Qt5, но в моем коде используются сигналы старого стиля и слоты для одного, пока я не знаю, что это действительно исправлено - кто-нибудь знает наверняка? – thefog
Вам не нужно переносить все ваше приложение на PyQt5, чтобы проверить его. Просто создайте минимальный, самодостаточный примерный сценарий, который воспроизводит проблему в PyQt4, а затем преобразует ее в PyQt5. Если вы не знаете, как его портировать, или не можете установить PyQt5 по какой-либо причине, разместите здесь сценарий примера, и я или кто-то другой проведут необходимое тестирование. – ekhumoro