Спасибо. Наткнулся случайно и чисто за пол часа понял, как работает PyQt без предварительной компиляции .ui в .py через батник, как часто делается. Очень понятно и последовательно.
Спасибо за видео. Не знал про QTimer и для подобных задач создавал поток 6:26 ну, раз спрашиваете, то излагаю. Не насчет того, почему в QApplication не работают обычные потоки, не знаю, помню как делал программу-франкенштейна где были виндовые потоки, волокна и posix threads. И ничего, работало же, правда не помню что я там делал. Python, по-моему небольшому, но все ж опыту работает кривовато с Qt. К примеру, пару раз было такое, что функция удаления у контейнеров их элемента (например, удаление строки в таблице) работала не так, как надо - скорее всего я что-то не так делал, но: ошибка не была обработана Python, она произошла где-то в библиотеках Qt. У Python и C++ разные методики уборки мусора, т.е. освобождения выделенной памяти, и иногда случается такое, что объект был удален из памяти, но Python все еще считает его живым. Итог - обращение к недоступной памяти, вылет и невнятная системная ошибка в виде кода завершения программы. Такое, кстати, было в том таймере для опоздавших, что я писал. В итоге там на самом деле не удаляются объекты, а скрываются. Поэтому если им пользоваться год, не закрывая, то он явно начнет брать весьма много памяти. 2:55 В python надо явно вызывать конструктор класса от которого происходит наследование. А без этого вызова что-то остается неинициализированным или необъявленным. Но это не точно, я так подозреваю 5:20 exec это вход в цикл обработки сообщений приложения. Сразу вспоминается WinAPI. Короче - там просто обработка того, что происходит внутри окна и что с этим окном делают. Кстати, у json'a от openweather есть параметр id - это число, означающее тип погоды. Они вот тут перечислены openweathermap.org/weather-conditions. Думаю, это лучше чем сравнивать строки с описаниями.
Отлично! и эпизоды очень в тему! когда смотришь несколько раз очень удобно. еще и мысли читаешь)) хотел увидеть нагрузку на проц этого всего и ты показываешь!!)
Спасибо за мнение! Мы с тобой вместе уже полгода кодим))) Про мысли - просто у тебя правильных подход про монитор ЦП. Я как нить скажу в видео про эту тему, расскажу пару историй))
Вместо qwidget.__init__ можно указать super().__init__ и нужен он для того, что бы в данный экземпляр класса было включено все что входит в базовый класс qwidget (собственно так не только с qwidget, а во всех классах). Нужно, что бы методы расширялись, а не оверрайдились.
Есть ли разница в производительности между использованием python multiprocessing (mp) и pyqt QThreads? Я думал, что mp будет предпочтительным питоническим способом, но заставить его "мариновать" было невозможно! Например, если я создаю процесс mp, который генерирует и отправляет данные в канал ... Я не могу найти способ обновить графический интерфейс с его помощью. Я создаю экземпляр класса GUI, который затем создает и порождает объект mp .. этот объект mp получает данные канала от процесса-отправителя, однако, если он каким-либо образом ссылается на графический интерфейс, я получаю ошибки травления. Мое приложение получает данные в режиме реального времени из последовательного порта, и я использую pyqtgraph для построения графика в реальном времени ... всплеск длится около 2 минут .. Как вы думаете, PyQt QThreads может не отставать и не терять байты?
Мульт процессинг и мультитрдинг - это две большие разницы ) муьлтипроцессность тяжелее, медленнее и вообще редко пользуется, в основном используется мультипоточность
И собственно то, что ты описал реализуется в поточном режиме, который будет принимать твои байты и через слот отправлять его в поток в котором работает графический интерфейс, а тот уже будет его отрисовывать.
спасибо, помог разобраться в потоках
Спасибо. Наткнулся случайно и чисто за пол часа понял, как работает PyQt без предварительной компиляции .ui в .py через батник, как часто делается. Очень понятно и последовательно.
Спасибо за видео. Не знал про QTimer и для подобных задач создавал поток
6:26 ну, раз спрашиваете, то излагаю. Не насчет того, почему в QApplication не работают обычные потоки, не знаю, помню как делал программу-франкенштейна где были виндовые потоки, волокна и posix threads. И ничего, работало же, правда не помню что я там делал.
Python, по-моему небольшому, но все ж опыту работает кривовато с Qt. К примеру, пару раз было такое, что функция удаления у контейнеров их элемента (например, удаление строки в таблице) работала не так, как надо - скорее всего я что-то не так делал, но: ошибка не была обработана Python, она произошла где-то в библиотеках Qt. У Python и C++ разные методики уборки мусора, т.е. освобождения выделенной памяти, и иногда случается такое, что объект был удален из памяти, но Python все еще считает его живым. Итог - обращение к недоступной памяти, вылет и невнятная системная ошибка в виде кода завершения программы. Такое, кстати, было в том таймере для опоздавших, что я писал. В итоге там на самом деле не удаляются объекты, а скрываются. Поэтому если им пользоваться год, не закрывая, то он явно начнет брать весьма много памяти.
2:55 В python надо явно вызывать конструктор класса от которого происходит наследование. А без этого вызова что-то остается неинициализированным или необъявленным. Но это не точно, я так подозреваю
5:20 exec это вход в цикл обработки сообщений приложения. Сразу вспоминается WinAPI. Короче - там просто обработка того, что происходит внутри окна и что с этим окном делают.
Кстати, у json'a от openweather есть параметр id - это число, означающее тип погоды. Они вот тут перечислены openweathermap.org/weather-conditions. Думаю, это лучше чем сравнивать строки с описаниями.
Спасибо за комент. Его полезно почитать для понятия Qt
Большое спасибо. Легко адаптировал пример под свою задачу, теперь программа не зависает
Четко и без воды. Для новичков типа меня просто класс!!!
Стараюсь!
Отлично! и эпизоды очень в тему! когда смотришь несколько раз очень удобно. еще и мысли читаешь)) хотел увидеть нагрузку на проц этого всего и ты показываешь!!)
Спасибо за мнение! Мы с тобой вместе уже полгода кодим))) Про мысли - просто у тебя правильных подход про монитор ЦП. Я как нить скажу в видео про эту тему, расскажу пару историй))
@@Привет_студент Угу) расскажи, интересно. А про мониторинг, у меня всегда в трее запущен core temp, привык следить за использованием ресурсов пк)
@@Привет_студент Можете ui файлом поделиться?
уаххаха "у меня есть эти каракули чтобы все это запускалось"
Всё-таки логичнее вместо QWidget.__init__(self) и QThread.__init__(self) использовать вызов конструктора родительского класса super().__init__()
Вместо qwidget.__init__ можно указать super().__init__ и нужен он для того, что бы в данный экземпляр класса было включено все что входит в базовый класс qwidget (собственно так не только с qwidget, а во всех классах). Нужно, что бы методы расширялись, а не оверрайдились.
Спасибо!
Тоже хочу красные сэлфы в саблайме
почему pyuic5 не используешь для перевода ui в python код, он же удобнее
Было бы неплохо иметь ссылку на код
Подскажите, а если у меня асинхронная функция, этот метод будет работать ?
9:30 ошибка в коде. Вы два раза написали pres в исключении
Есть ли разница в производительности между использованием python multiprocessing (mp) и pyqt QThreads?
Я думал, что mp будет предпочтительным питоническим способом, но заставить его "мариновать" было невозможно!
Например, если я создаю процесс mp, который генерирует и отправляет данные в канал ... Я не могу найти способ обновить графический интерфейс с его помощью. Я создаю экземпляр класса GUI, который затем создает и порождает объект mp .. этот объект mp получает данные канала от процесса-отправителя, однако, если он каким-либо образом ссылается на графический интерфейс, я получаю ошибки травления.
Мое приложение получает данные в режиме реального времени из последовательного порта, и я использую pyqtgraph для построения графика в реальном времени ... всплеск длится около 2 минут .. Как вы думаете, PyQt QThreads может не отставать и не терять байты?
Мульт процессинг и мультитрдинг - это две большие разницы ) муьлтипроцессность тяжелее, медленнее и вообще редко пользуется, в основном используется мультипоточность
И собственно то, что ты описал реализуется в поточном режиме, который будет принимать твои байты и через слот отправлять его в поток в котором работает графический интерфейс, а тот уже будет его отрисовывать.
А как убрать верхушку окна?
ruclips.net/video/Ap865V3sAdw/видео.html
Если кому-то надо