|
5 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 26
|
|||||||||||
Зависают виджеты созданные библиотекой PyQt5 при использовании многопоточной библиотеки QThread04.08.2021, 21:10. Показов 3181. Ответов 5
Метки нет (Все метки)
Уважаемые знатоки. Проблема следующая.
Написал простенькую программу которая принимает данные извне. В данную программу в любой момент времени приходят данные (целочисленные значения типа Int). В моём коде для наглядной иллюстрации приход данных имитируется функцией (make_data) Main класса. Данная функция запускается вторым потоком из класса DataMaker путем нажатия на кнопку Start. После нажатия кнопки в программу раз в 1 секунду начинает приходить список из четырёх числе (10, 20, 11, 21). Проходимся по данному списку через цикл for и определяем переменные index и key. Index это первая цифра числа, а key это вторая цифра. Если вторая (key) цифра равна нулю, то изменяем цвет лейбла (mark_0 или mark_1) на зеленый в зависимости от того какая (index) цифра была первой (1 или 2) при помощи метода (activate_mark) Если же вторая (key) цифра была 1, то добавляем к значению списка self.result_list[index] единицу и при помощи метода insetr_in_winget отражаем значение из списка в одном из (point_0 или point_1). Далее также зажигаем зеленом нужный из (mark_0 или mark_1) при помощи метода (activate_mark). Далее создается новый поток при помощи метода (deactivate_mark) и снова меняет цвет (mark_0 или mark_1) на красный. Тем самым программа показывает исправный прием данных. Также кнопками Clear можно обнулить значения в result_list, а кнопкой Stop остановить прием данных. Суть проблемы следующая. Если дать программе немного поработать, то визуализация зависнет т.е. значения в (point_0 или point_1) и (mark_0 или mark_1) перестанут обновляться. Причем в консоль данные при помощи функции print выводиться не перестанут, а значит второй поток исправно работает и значения приходят При нажатии на любую их кнопок Clear в одной графе все обнуляется, а во второй значения начисляются сразу за все пропущенное время. Т.е. если программа зависля на 100 очках в виджетах point и простояла 10 секунд. Я нажимаю на кнопку Clear и в одной графе все очищается, а во вторую начисляются те 10 секунд простоя, что программа не работала. Помогите, никак не могу побороть данную проблему. Код Xml и самой программы прилагается. main.py:
0
|
|||||||||||
| 04.08.2021, 21:10 | |
|
Ответы с готовыми решениями:
5
QT: лаги программы при использовании QVector<QThread> PyQt5 QThread Ошибка при установке библиотеки pyqt5-tools |
| 04.08.2021, 22:51 | |
|
Как интересно! Вот буквально позавчера была тема Отображение главного окна программы | QThread просто близнец поднятой Вами. И Вас тоже не остановило прямое указание в документации Qt, что GUI исполняется исключительно в главном потоке, иначе называемом GUI-потоком. Фантастика!
Добавлено через 3 минуты И вот эта тоже позавчера была Не до конца закрывается программа с бесконечным циклом while Как-то кучно пошло. Добавлено через 19 минут И тут https://doc.qt.io/qt-5/threads-technologies.html тоже вроде бы ясно расписаны пределы применимости разных вариантов использования QThread и способ получения данных от QThread.
0
|
|
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
||||||
| 06.08.2021, 10:39 | ||||||
Сообщение было отмечено Удалов Павел как решение
Решение
3
|
||||||
|
5 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 26
|
|
| 08.08.2021, 13:28 [ТС] | |
|
Спасибо большое, kapbepucm. Решение крылось в сигналах и слотах.
0
|
|
| 08.08.2021, 13:28 | |
|
Помогаю со студенческими работами здесь
6
Добрый день, возникла проблема: при попытке импортировать из библиотеки PyQt5! Проблема с библиотекой PyQT5 Ошибка при использовании библиотеки Почему при нажатии кнопки при использовании библиотеки createjs функция запускается несколько раз? Ошибка при использовании библиотеки getch Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|