PyQt5 Урок[3.1] - QTimer, QThread поток, визуализация без лагов

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024

Комментарии • 25

  • @Oddi5h
    @Oddi5h 3 дня назад

    спасибо, помог разобраться в потоках

  • @inquisitor_okabe
    @inquisitor_okabe Год назад

    Спасибо. Наткнулся случайно и чисто за пол часа понял, как работает PyQt без предварительной компиляции .ui в .py через батник, как часто делается. Очень понятно и последовательно.

  • @re0ah
    @re0ah 3 года назад +8

    Спасибо за видео. Не знал про 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. Думаю, это лучше чем сравнивать строки с описаниями.

    • @Привет_студент
      @Привет_студент  3 года назад +1

      Спасибо за комент. Его полезно почитать для понятия Qt

  • @undersun6301
    @undersun6301 Год назад

    Большое спасибо. Легко адаптировал пример под свою задачу, теперь программа не зависает

  • @АлексейМахонин-л5с
    @АлексейМахонин-л5с 3 года назад +2

    Четко и без воды. Для новичков типа меня просто класс!!!

  • @damizi64
    @damizi64 3 года назад +1

    Отлично! и эпизоды очень в тему! когда смотришь несколько раз очень удобно. еще и мысли читаешь)) хотел увидеть нагрузку на проц этого всего и ты показываешь!!)

    • @Привет_студент
      @Привет_студент  3 года назад +1

      Спасибо за мнение! Мы с тобой вместе уже полгода кодим))) Про мысли - просто у тебя правильных подход про монитор ЦП. Я как нить скажу в видео про эту тему, расскажу пару историй))

    • @damizi64
      @damizi64 3 года назад

      @@Привет_студент Угу) расскажи, интересно. А про мониторинг, у меня всегда в трее запущен core temp, привык следить за использованием ресурсов пк)

    • @РоманПопов-ц7п
      @РоманПопов-ц7п 3 года назад

      @@Привет_студент Можете ui файлом поделиться?

  • @dedpihto680
    @dedpihto680 2 года назад +1

    уаххаха "у меня есть эти каракули чтобы все это запускалось"

  • @IvaNFallout
    @IvaNFallout 3 года назад +11

    Всё-таки логичнее вместо QWidget.__init__(self) и QThread.__init__(self) использовать вызов конструктора родительского класса super().__init__()

  • @SergMirny_yt
    @SergMirny_yt Год назад

    Вместо qwidget.__init__ можно указать super().__init__ и нужен он для того, что бы в данный экземпляр класса было включено все что входит в базовый класс qwidget (собственно так не только с qwidget, а во всех классах). Нужно, что бы методы расширялись, а не оверрайдились.

  • @timsmith9942
    @timsmith9942 3 года назад

    Спасибо!

  • @span4ev
    @span4ev 8 месяцев назад

    Тоже хочу красные сэлфы в саблайме

  • @oxxxymiron5153
    @oxxxymiron5153 3 года назад +2

    почему pyuic5 не используешь для перевода ui в python код, он же удобнее

  • @mr.wayfarer6082
    @mr.wayfarer6082 3 года назад +1

    Было бы неплохо иметь ссылку на код

  • @МаксимКамерер-е6ш
    @МаксимКамерер-е6ш 2 года назад

    Подскажите, а если у меня асинхронная функция, этот метод будет работать ?

  • @satanx4160
    @satanx4160 3 года назад

    9:30 ошибка в коде. Вы два раза написали pres в исключении

  • @bennguyen1313
    @bennguyen1313 3 года назад

    Есть ли разница в производительности между использованием python multiprocessing (mp) и pyqt QThreads?
    Я думал, что mp будет предпочтительным питоническим способом, но заставить его "мариновать" было невозможно!
    Например, если я создаю процесс mp, который генерирует и отправляет данные в канал ... Я не могу найти способ обновить графический интерфейс с его помощью. Я создаю экземпляр класса GUI, который затем создает и порождает объект mp .. этот объект mp получает данные канала от процесса-отправителя, однако, если он каким-либо образом ссылается на графический интерфейс, я получаю ошибки травления.
    Мое приложение получает данные в режиме реального времени из последовательного порта, и я использую pyqtgraph для построения графика в реальном времени ... всплеск длится около 2 минут .. Как вы думаете, PyQt QThreads может не отставать и не терять байты?

    • @SergMirny_yt
      @SergMirny_yt Год назад

      Мульт процессинг и мультитрдинг - это две большие разницы ) муьлтипроцессность тяжелее, медленнее и вообще редко пользуется, в основном используется мультипоточность

    • @SergMirny_yt
      @SergMirny_yt Год назад

      И собственно то, что ты описал реализуется в поточном режиме, который будет принимать твои байты и через слот отправлять его в поток в котором работает графический интерфейс, а тот уже будет его отрисовывать.

  • @nikolaikonoplyannikov4840
    @nikolaikonoplyannikov4840 3 года назад

    А как убрать верхушку окна?

    • @abuser-ff8pg1fe9f
      @abuser-ff8pg1fe9f 2 года назад

      ruclips.net/video/Ap865V3sAdw/видео.html
      Если кому-то надо