Почему Desktop-приложение на Питоне?

Если Вы, как и я, решили впервые взглянуть в сторону Python после нескольких попыток изучения С++/C# то скорее всего первым проектом станет desktop-приложение. Отходя от темы скажу что тяга к изучению этих языков была безнадежно утрачена в виду классического преподавания в духе "лишь бы сдали" и бесчисленных однотипных и монотонных лекций. Как я сказал выше хоть и на начальном уровне, но я всё же касался разработки приложений для Windows и поэтому мне хотелось посмотреть на принципы работы питона сначала отсюда(а не прыгать в django и прочие мощные фреймворки). Должен предупредить - в статье не приводятся выдержки из кода и она является скорее выражением моих эмоций, полученных за этот проект.

Какое приложение создавать?

В этом я не сомневался ни секунды и сразу выбрал - ТАЙМЕР! Я люблю засыпать под звуки фильмов с различных ресурсов, но то что после их окончания комп работал лишние 6 часов меня решительно не устраивало. Я конечно знаю про существование разного рода приложений с подобным функционалом(например SMtimer), но во-первых его UX/UI это просто привет нулевым, а во-вторых хотелось всё-таки своё.

Непосредственно сам SMtimer
Непосредственно сам SMtimer

Задачи намечены - время действовать

Посмотрев полтора гайда с youtube преисполнился и написал первый прототип с использованием стандартной библиотеки tkinter. Выглядело это весьма сомнительно с точки зрения того же UX/UI, но это уже было что-то

Первая версия моего многострадального проекта
Первая версия моего многострадального проекта

Тут каждый может заметить и сказать "но ведь это ещё хуже чем SMtimer" и будут правы, в целом и меня посещали такие мысли и я решил обратиться к поиску чего-то что сможет сделать из этого адекватное приложение которым я смогу пользоваться без зазрения совести.

CustomTkinter или как я пытался познать дзен

После недолгого поиска я нашел его - CustomTkinter. Он обещал буквально сделать из моего прототипа приложение, которое будто изначально было в Windows 10. Непосредственно exampl'ы вы можете смотреть ниже:

Темная тема "example" от CustomTkinter
Темная тема "example" от CustomTkinter
Соответственно светлая тема "example" от CustomTkinter
Соответственно светлая тема "example" от CustomTkinter

Вдобавок к этому библиотека обещала и минимальные правки кода для переноса моего "прототипа" на эту прелесть, но мне предстоял ещё большой путь в понимании как это тут работает...

Куча проблем и нехватка понимания

Именно так бы я описал свой путь в познании этой библиотеки. Буквально пытаясь взаимодействовать с ней я понял как устроены типы данных Python(да, может показаться смешным, но когда впервые встречаешь NoneType слегка удивляешься), понял как взаимодействовать с объектами классов и собственно разделять код проекта на функциональные блоки (что до этого мне казалось чем-то странным). Но для того чтобы понять насколько всё было грустно в моих познаниях - вот референс который я запилил от безысходности( на тот момент я хотел получить хотя бы это):

Как можно заметить даже цвет в тупую залит в Paint
Как можно заметить даже цвет в тупую залит в Paint

Проблем была целая гора - я решительно не мог понять как общаться с CusomTkinter - создание и позиционирование его объектов хоть сейчас и кажутся достаточно логичными и понятными, но тогда они были для меня сродни китайским иероглифам. После нескольких вечеров, проведённых за курением мануалов я смог собрать 3ю версию (её первая реинкарнация):

Пусть и работающая на коленях, но РАБОТАЮЩАЯ версия
Пусть и работающая на коленях, но РАБОТАЮЩАЯ версия

Получив это я уже был рад, что не сдался и приступил к починке расположения всех объектов по экрану. Однако следует упомянуть о "маленькая проблема" - в CustomTkinter нет SpinBox, а значит вводить данные было нужно либо с клавиатуры, либо искать как сделать этот самый SpinBox самому. Выбор пал на второй вариант, на сайте, посвященном самому ctk автор сделал FloatSpinBox, доработав который я уже мог получить то что хотел.

Собственно FloatSpinBox
Собственно FloatSpinBox

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

  1. Добавил min и max value - теперь я мог использовать этот класс и для минут и для часов (сначала я просто наспамил несколько классов где вручную установил ограничения для каждого из них)

  2. Реакция на колёсико мышки теперь охватывала весь SpinBox и это было чудесно. Если просто повесить обработчик на self.bind("MouseWheel", self.on_mouse_wheel)" то срабатывание будет только на границах entry и элементах кнопок, что просто ужасно.

  3. Ну и конечно реализовал прокрутку в обратную сторону. Это так странно делать то что обычно реализовано уже за тебя.

    Ну и немного поиграл с темами самого customtkinter:

Рождение первого адекватного прототипа
Рождение первого адекватного прототипа
Темы которые я нашел на просторах github
Темы которые я нашел на просторах github

Наконец то, что я и хотел получить

Теперь я решил сделать вывод времени до срабатывания. Я прорабатывал разные версии этого таймера и пришел к тому что запилил TimeBox. Главное отличие - никаких кнопок. Вывод конечно же стал гораздо веселее.

Предрелизная версия моего таймера
Предрелизная версия моего таймера

После того как я насмотрелся на кастомные темы с просторов github я решил, что мне такого ужаса точно не нужно и вернулся к истокам - стандартной зелёной теме. Победив эффект циклопа (даже 3х) я добавил переключение тем и поправил логику приложения - перезагрузка. выключение, сон и блокировка работают на ура ну и два вида условий таймера - через промежуток времени и В конкретное время. Я был полностью доволен и буквально счастлив что теперь мне не нужно каждый день идти в планировщик заданий и выставлять время выключения вручную! Но тут я увидел то, что впоследствии переведет меня из Notepad++ (да, да, именно там я и писал свой проект до этого момента). Это была библиотечка pywinstyles, обещающая эффекты прозрачности как из win7 но в стиле десятки. То что нужно.

Sample Customtkinter но с Pywinstyles
Sample Customtkinter но с Pywinstyles

Мне показалось это просто идеальным дополнением моей програмки. Запускаешь поверх фильма и не мешает и знаешь сколько времени осталось - красота. Но полное отсутствие документации и внятных sampl'ов заставило заново пересмотреть перспективы проекта. Я написал автору pywinstyles и с его описанием я таки смог заставить работать это всё вместе:

Итоговые версии с pywinstyles
Итоговые версии с pywinstyles

Если тут есть такие же странные люди, которые решат потрогать pywinstyles - будьте готовы к множеству проблем. К примеру после смены темы на прозрачную назад вернуть никак. Только перезапуск. У main_frame от ctk тут беловатый фон, что заставляет программу "сиять" на светлых фонах.

Выводы

Я получил то, что хотел и кучу необходимого опыта сверху. В будущем хочу реализовать автоматическую остановку таймера. В случае если фильм ставиться на паузу то и сам таймер останавливается. Как это реализовать при просмотре фильма из браузера я пока не знаю, но если у Вас есть идеи - с радостью почитаю.

Потрогать версию без pywinstyles можно тут

Комментарии (90)


  1. mikko_kukkanen
    26.08.2023 16:39
    +12

    Programming Language: Python Required dependencies: customtkinter, time, datatime, os and typing

    Я не самый большой специалист по python, но мне кажется, вмеcто этого лучше добавить в код файл requirements.txt


    1. slonopotamus
      26.08.2023 16:39
      +2

      requirements.txt устарел уже лет на десять. И появившийся вслед за ним setup.py тоже. Современный подход - pyproject.toml.


      1. mikko_kukkanen
        26.08.2023 16:39

        Старый конь борозды не испортит.


  1. Zexyl
    26.08.2023 16:39
    +1

    Но тут я увидел то, что впоследствии переведет меня из Notepad++ (да, да, именно там я и писал свой проект до этого момента). 

    Ощущение, как будто фраза оборвана на половине. Переведёт куда? Также:

    Раработка


  1. Psychosynthesis
    26.08.2023 16:39
    +4

    А потом питон снова обновит версию, и вдруг выяснится, что "ваша версия операционки больше не поддерживается версией питона которую мы используем в разработке, так что до свидания".

    Для прототипирования может и ок, но нормальное ПО на этом мусоре писать - дурной тон.


    1. Ritan
      26.08.2023 16:39
      +6

      Ну или придётся делать так, как делает большая часть более-менее сложного софта на питоне - таскать за собой всё. Или банально - в виде бинарного дистрибутива или кокетливо, используя virtualenv, conda или ещё 10000 подобных им инструментов для решения проблемы, которой не должно было существовать.


    1. SquareRootOfZero
      26.08.2023 16:39
      +30

      У меня несколько написанных для себя программ на Питоне живут ещё с Windows XP и версии Питона, кажется, 2.4. Пережили переход на Висту, 7 и 10, и на большинство последующих актуальных версий Питона (переход на Python 3 потребовал некоторых правок). ЧЯДНТ? Между тем, многий софт, обычный, сишный, где Питона никакого нет даже в следовых количествах, внезапно, "начиная с такой-то версии мы не поддерживаем Windows 7". Мусор — он не в Питоне, он в головах.


      1. MountainGoat
        26.08.2023 16:39
        +2

        Дело не в "живут ещё с", а в том, как написать программу на Питон 3.11, а потом выяснить, что версия под Win7 ещё нужна.


        1. SquareRootOfZero
          26.08.2023 16:39
          +3

          Перевести на Питон 3.8 сильно сложнее, чем из программы на C++ выкинуть все API, добавленные после Windows 7? Или почему там они перестают старую винду поддерживать.


          1. MountainGoat
            26.08.2023 16:39

            Да, сильно. WinAPI не часто бывает размазан по всей программе, да ещё чтобы везде новый. Питон 3.8 - 3.11 это во многом новые синтаксические плюшки. Для отката назад может потребоваться переписать почти каждую строчку всей программы. Да и приятного мало возвращаться назад в упоротый синтаксис тех type hint-ов.
            Поэтому вместо этого костылят как запустить новый Питон на семёрке, и всё это глючит.


      1. kisskin
        26.08.2023 16:39

        У меня десктопный софт, написанный на Delphi 5 (это 1997 или 1998 год) работал в Win2k, XP, 2008 server, 7, сейчас работает в 10, а в 11, надеюсь, не скоро придётся проверять, но уверен, что справится. Менять мне в нем не пришлось ничего. А вот чужой десктопный питонный софт на 7-ке уже не запускается принципиально. Так что там насчёт "многого софта"?


        1. SquareRootOfZero
          26.08.2023 16:39
          +1

          В чём именно заключается ваш вопрос?


    1. me21
      26.08.2023 16:39
      +2

      Ну это любой софт в какой-то момент может по желанию разработчиков перестать поддерживать определенную версию Windows.


    1. jogick
      26.08.2023 16:39
      +5

      Программа написанная для диплома в 2013-м году, ещё под XP во втором python (выводила данные от разработанной железки), работает на новом Debian'е, всё что потребовалось поменять import Tkinter as tk на import tkinter as tk


    1. SUNsung
      26.08.2023 16:39
      -1

      Какая же жиза жизовая

      У этого говнопитона на сейчас есть три (!!!) версии в третей версии, которые между собой не дружат.

      Ладно бы новый функционал, но нет сломали обратную совместимость.

      И это все 3 версия. Делали бы уже нормально, не поддерживаемое говно назвали бы 4 питоном.

      А недавно столкнулся под KDE с тем, что одно приложение использует 3.2, а другое 3.8. Прописать на запуск не помогает потому как там внутрм вызовы "python3". И для того что бы работало одно приложение надо менять глобально версию по умолчанию. Такой сюр.


      1. Andrey_Solomatin
        26.08.2023 16:39

        Ну совместимость там в одну сторону. Не всё со всем.

        Помотрите на https://docs.python.org/3/library/venv.html, просто запускаете каждое преложение в своём виртуальном окружении.

        Между 3.2 (который уже более 6 лет не поддерживается) и 3.8 большая разница по версиям зависимостей, минимальня версия часто ползёт вместе с поддержкой версиии языка. Я бы сделал ставку что ваша несоместимость где-то здесь. Пользуйтесь виртуальным окружением.


    1. Teamer_ol
      26.08.2023 16:39

      Если я правильно понимаю планы тех, кто ведёт разработку языка Python и интерпретатора CPython, то они не собираются выпускать новые версии языка, ломающие обратную совместимость.

      А какие технологии вы считаете не "мусором" (очень оценочное суждение, но ладно) для написания нормального ПО?

      Заранее благодарю за ответ.


      1. Psychosynthesis
        26.08.2023 16:39

        Не могу сказать, что имею прям стройное представление о каком-то эталоне...

        Везде какие-то свои костыли... Где-то более костыльные, где-то менее. По ощущениям С++ до сих пор позволяет нормальные программы писать для абсолютного большинства платформ, без всех этих диких связей с зависимостями (на самом деле понятно что с ними, но их можно паковать довольно компактно внутрь бинарника без всяких шизоплясок в духе "запакуй среду выполнения с докером в инсталлятор целиком", что выглядит просто бредом).

        Хотя тут верно сказали, от разработчика многое зависит, субъективно полно программ которые хоть и написаны на крестах, ради пары каких-то функций тащат с собой целые фреймворки .net, там тоже шиза та ещё.

        Возможно у раста дела получше, не знаком с вопросом.


    1. HELLSP4RK
      26.08.2023 16:39
      -1

      Глупость какая. Каким это питоном какая версия Windows перестала поддерживаться? Десятки тысяч компаний "нормальное ПО на этом мусоре" пишут и у все нормально работает


    1. Anton_Zimyanin
      26.08.2023 16:39

      Для этого придумали .venv + есть docker, который убирает даже намек на расхождение версий.

      Чек Insomnia, эта прога написана на "мусоре", но являются приятной глазу и в скорости не уступает Postman.


    1. Andrey_Solomatin
      26.08.2023 16:39

      Пока гении нос воротят, люди делают нормальное ПО и у них остаётся время на написание статьи. Можно например запаковать Питон в инсталятор.


  1. CoolCmd
    26.08.2023 16:39
    +3

    делать выпадающий список с двумя элементам для настольного компа...


  1. Iscander_Che
    26.08.2023 16:39
    +1

    У самого Customtkinter есть зависимости, кроме Python?


  1. dyadyaSerezha
    26.08.2023 16:39
    +4

    1. Кнопки обычно располагают рядом, а тут они сильно разнесены.

    2. Цифры можно вводить клавиатурой?

    3. Что такое значок полумесяца?

    4. Установка времени мышкой - самая удобная в некоторых прогах на Андроиде. Там круг часов и минут, делается все очень быстро

    5. Не понял, зачем постоянно видет, сколько осталось до выключения. Я бы лучше показал окно только за 1 мин или 30 сек до выключения.

    6. Автовыключение по завершению фильма на неком сайте можно сделать двумя путями: (а) написать плагин/эддон для браузера и выклюяать комп оттуда (или передавать некий сигнал внешней проге по собственно выключению), и (б) стартовать браузер из специальной проги типа chrome driver, которая автоматизирует работу с браузером и позволяет искать всякие элементы на страничке и взаимодействовать с ними.

    7. Есть правда ещё один способ - когда запустил прогу, замерять уровень загрузки cpu/gpu и следить за ним. Как только он резко упадёт, то значит, что фильма кончилась

    8. Можно ещё добавить кпопки snoose с разными вариантами - 5,10,15,30 мин - и показывать их только за секунд 15-30 до выключения.


  1. SquareRootOfZero
    26.08.2023 16:39
    +9

    Мосье знает толк в извращениях. Возьмите PyQT или wxPython и не мучайтесь. Нормальный виндовый гуй, выглядящий как нормальный виндовый гуй.


    1. HemulGM
      26.08.2023 16:39
      +3

      Мосье знает толк в извращениях. Возьмите нормальный компилируемый язык и не мучайтесь. Тот же C++ с Qt, C# с WPF (или Avalonia) или Delphi с FMX. Нормальный виндовый гуй, выглядящий как нормальный виндовый гуй.


      1. SquareRootOfZero
        26.08.2023 16:39
        +3

        Ой-вей, мосье таки пробовали использовать это Qt c С++? Я только от чтения инструкций, как это всё собрать, о**ел и передумал. Дело было несколько лет назад, возможно, с тех пор лучше стало, возможно, нет, но для PyQT уже тогда работал банальный pip install. wxWidgets, правда, недавно заводил под Visual Studio — вот он приятно удивил, буквально один конфигурационный файл добавляешь в настройки проекта, и уже всё работает, даже зависимости прописывать не нужно. C# и WPF не люблю, Delphi не знаю и учить как-то не вижу смысла — если уж даже в период расцвета его популярности не выучил, то щас ради чего? Время от времени пишу гуй, на мой взгляд, Питон для него замечательно подходит, а для мелких поделок "для себя", наподобие описанной в статье, так и вовсе не представляю, чем бы он был плох.


        1. ainoneko
          26.08.2023 16:39

          "YMMV": у меня PyQT под Линуксом не заработал даже для hello-world.
          (А QT для С++ нормально.)


          1. vladimiregorov74
            26.08.2023 16:39

            А, что конкретно пошло не так? Просто я тоже столкнулся с подобной проблемой


        1. me21
          26.08.2023 16:39
          +1

          А зачем собирать, если можно ставить в собранном виде? В общем-то, что на Python, что на C++ использовать Qt проблем нет. Родной установщик Qt (Maintenance Tool) для C++ существует уже больше десяти лет.


          1. SquareRootOfZero
            26.08.2023 16:39

            Да я соберу, если прям надо будет, и, более того, как-то по работе даже собирал, но то по работе, а чтобы для себя таймер написать — как-то оно, мне кажется, того бы не стоило. Помню, что оно долго грузило всякими разными версиями и лицензиями и пр., и пр., а готовых бинарных сборок я тогда найти не осилил — если щас есть, ну ок, рад за них. Отметим, конечно, что и для Python можно вполне поиметь проблем с пакетами, которые туго собираются из исходников и только из исходников (Qt к ним, правда, не относится), и где вся надежда либо на безупречную прямоту собственных рук, либо на широко известный в узких кругах сайт Кристофа Голке, который уже больше года не обновлялся.


        1. HemulGM
          26.08.2023 16:39
          -1

          пробовали использовать это Qt c С++?

          Честно? Почти нет. А когда пробовал - вообще не понравилось. Но его используют многие и типа хвалят. А я, т.к. в основном работаю на Делфи, попробовал так сказать что-то такое, после чего всё остальное меня не устраивает. Там создание сложнейшего GUI невероятно удобно, просто и почти без кода. Да, сам язык только начинает догонять не прекращавшие развиваться языки, но догоняет, а местами и так было лучше.
          Но вы просто не пробовали действительно удобные инструменты для создания GUI. Кстати. Delphi имеет интеграцию с Питоном. Причем в обе стороны. Можно внутри Делфи использовать интерпретатор питона, а можно в Питоне подключить созданный в Делфи GUI. https://blogs.embarcadero.com/introduction-to-python-gui-development-with-delphi-for-python-vcl-fmx/

          Т.е. качаешь бесплатную версию среды. Накидываешь фору (или формы). Для этого вообще код писать не надо. Выбираешь стиль или набор стилей или создаёшь вообще свой уникальный. И как в PyQt подключаешь всё это и используешь в Питоне.


          1. SquareRootOfZero
            26.08.2023 16:39
            +1

            Если вы про редактор формочек, то и помимо Делфи всякого добра полно — я недавно какой-то wxBuilder использовал, накидываешь элементы, расставляешь стили, да, вообще код писать не надо, только для обработчиков событий. Хотя на Питоне мне чо-то нравится прямо весь гуй в коде создавать, C++ для такого слишком неуклюж, а на Питоне нормально.


            1. HemulGM
              26.08.2023 16:39
              +1

              В Делфи с этим пошли ещё дальше. Помимо дизайнера формочки, есть дизайнер стиля. Т.е. например. Ты хочешь особого вида кнопку. Ты открываешь ещё один дизайнер и тем же способом, что и в дизайнере формы создаешь собственный стиль этой кнопки (или поля ввода, элемента списка или таблицы и т.д.). Опять же визуально

              Пример элемента списка
              Это не на телефоне, это тест в Десктоп
              Это не на телефоне, это тест в Десктоп


            1. Daddy_Cool
              26.08.2023 16:39
              +1

              Вы вот это имеете ввиду?
              https://ru.wikipedia.org/wiki/WxFormBuilder
              С новыми/другими системами есть проблема - неизвестно заранее, есть ли там что нужно и работает ли оно так как хочется. А Дельфи и С++ Билдер всё же развитые системы, там что угодно кажется есть.
              Расскажите, какие плюсы у wxBuilder по сравнению с Дельфи?


              1. SquareRootOfZero
                26.08.2023 16:39

                Я, извините, не могу рассказать, какие плюсы или минусы есть у чего-либо по сравнению с Дельфи, по причине полного незнания Дельфи. Трудно, очень трудно было избежать Дельфи, пытаясь быть программистом в российской провинции начала 2000-х, но вот мне как-то удалось.


                Да и вообще было бы странно сравнивать редактор формочек WxFormBuilder со средой разработки Delphi, включающей в себя IDE и собственный компилятор для собственной версии Паскаля. Возможно, Delphi хороша — некоторые знакомые программисты в российской провинции начала 2000-х очень хвалили — но я ж просто даже упоминание Delphi встречаю впервые лет за десять. А когда на работе последний раз понадобилось делать гуй, уговорить начальство делать его на wxWidgets у меня кое-как получилось (эти интеллектуальные содомиты изначально планировали делать его на Unity), а на Delphi бы точно не смог...


                1. HemulGM
                  26.08.2023 16:39

                  Смог бы)


      1. chiga17
        26.08.2023 16:39

        Писал несколько лет на C++ QT. Сейчас уже несколько лет использую wxWidgets с питоном. От последнего впечатления намного более приятные


  1. vk6677
    26.08.2023 16:39
    +11

    shutdown -h 22:30


  1. Leetc0deMonkey
    26.08.2023 16:39
    -13

    Зачем вообще нынче десктоп приложение? Чтобы потом переписать на веб-морду и микросервисы? Я понимаю, первый опыт, всё такое. Но не лучше ли начинать сразу приступая к чему-то более актуальному? Это как учить программирование по Паскалю, хотя нет никаких проблем начинать сразу с Жавы, в усечённом виде.


    1. grumbler70
      26.08.2023 16:39
      +6

      Зачем вообще нынче десктоп приложение?

      Написано из десктоп либо мобильного приложения.

      Чтобы потом переписать на веб-морду и микросервисы?

      Маньячество с микросервисами до добра не доведёт


      1. Leetc0deMonkey
        26.08.2023 16:39
        -8

        Написано из десктоп либо мобильного приложения.

        Написано из браузера, который де-факто стал OS системы представления.

        Маньячество с микросервисами до добра не доведёт

        Тут я иронизирую. Но что есть то есть.


        1. HemulGM
          26.08.2023 16:39
          +7

          Написано из браузера, который де-факто стал OS системы представления.

          Который все ещё по факту - десктоп приложение.

          Помимо этого, вся ОС (при чем совершенно любая) - это набор приложений, а не веб сервисов или веб-приложений.

          Никто в здравом уме не пользуется браузером для чата в мессенджерах. Или вы для TG, WU, дискорд или Скайпа используете браузер? Нет. А Дискорд и Скайп вообще за вас его используют и как работают, норм?

          Ну и давайте сделайте таймер отключения компа через веб сервис. Без нужды в отдельном "десктоп приложении" в виде веб-сервера.


          1. Leetc0deMonkey
            26.08.2023 16:39
            -6

            Который все ещё по факту - десктоп приложение.

            И? Кто-то собирается становиться разработчиком браузеров? Надо признать что время десктопных приложений безвозвратно ушло. Я сам категорически против когда набегают смузихлёбы и начинают раскурочивать вполне работающий годами десктоп-клиент. Но стартовать новые проекты - нахрена? Если это конечно не какая-то специфика типа общения с локально воткнутым девайсом. И то, кажется, прогресс у броузеров и в этом плане какой-то присутствует. А если нет, как уже сказали, уже существуют вполне устоявшиеся кроссплатформенные стандарты типа Qt.

            Никто в здравом уме не пользуется браузером для чата в мессенджерах. Или вы для TG, WU, дискорд или Скайпа используете браузер?

            Внезапно, на десктопе это такие же веб-приложения, обёрнутые в какую-то хрень на базе Хрома. Электрон кажется называется.

            Ну и давайте сделайте таймер отключения компа

            Делайте. Удачи потом найти высокооплачиваему работу с такими "восстребованными" навыками.


            1. HemulGM
              26.08.2023 16:39
              +4

              Внезапно, на десктопе это такие же веб-приложения, обёрнутые в какую-то хрень на базе Хрома. Электрон кажется называется.

              Я об этом сразу написал. Только это скорее проблема, а не преимущество

              А Дискорд и Скайп вообще за вас его используют и как работают, норм?

              Но стартовать новые проекты - нахрена?

              Нахрена? А нахрена использовать абстрактную прослойку в виде API браузера, когда софт может куда быстрее, эффективнее и удобнее работать без прослойки? Да, создавать софт сложнее, чем веб-сайтики. Кто ж спорит. С таким же успехом можете использовать Java, которая по сути ничем не отличается от абстракции браузера со своим API, однако дает куда больше возможностей чем браузер. Равно как и с браузером достаточно написать один раз виртуальную машину под платформу и использовать один и тот же код для работы на всех платформах. Однако, софт под десктоп в большинстве своем пишется всё равно на нативно компилируемых языках. А почему - и так понятно. Скорость работы, уникальные для ОС возможности, отсутствие зависимости от какого-то там браузера и т.д.


              1. Leetc0deMonkey
                26.08.2023 16:39
                -3

                А нахрена использовать абстрактную прослойку в виде API браузера, когда софт может куда быстрее, эффективнее и удобнее работать без прослойки?

                Набрал в адресной строке - и работаешь.


                1. HemulGM
                  26.08.2023 16:39
                  +4

                  Кликнул два раз на ярлык и работаешь?

                  А с веб ещё и инета может не быть, или заблокируют или вообще политика в компании и доступ строгий и так далее.


                  1. Leetc0deMonkey
                    26.08.2023 16:39
                    -4

                    Кликнул два раз на ярлык и работаешь?

                    Только сначала скачай, установи. Потом регулярно обновляй. Какой-то привет из 90ых.

                    А с веб ещё и инета может не быть, или заблокируют или вообще политика в компании и доступ строгий и так далее.

                    Политика компании как раз в первую очередь и блокирует запуск всякой нативной хрени.


                    1. HemulGM
                      26.08.2023 16:39
                      +7

                      Ну видимо вы только в 90х и использовали нативный софт. Давно вы телеграм обновляли? А как сложно было скачать? Сколько часов в день тратите на установку телеграмма каждый раз?

                      А ещё представьте, как было бы здорово имеет такую программу, которая бы позволяла найти программу, установить в один клик и чтоб потом само обновлялось. А хотя подождите-ка, уже 8 лет как в Винде есть Microsoft Store, который все это давно умеет и делает.

                      И Steam с играми также поступает. Вот это прогресс.

                      А от современных сайтов и сервисов с тоной говно-рекламы уже блевать хочется.

                      Они не удобные, кривые, медленные, лагающие. Жрущие ОЗУ как не в себя. 7 вкладок и минус 6гб ОЗУ. Великолепно.

                      При этом все вирусы и все говно - это как раз из веб источников. С веб сайтов. Весь скам, ложные ссылки на сервисы, поддельные страницы. Спасибо веб сайтам и "безопасным" браузерам. А сколько было бы не будь адблока? Просто ужас.


                      1. Leetc0deMonkey
                        26.08.2023 16:39
                        -3

                        Ну видимо вы только в 90х и использовали нативный софт.

                        Именно так. Нет, я не против установить пару-тройку частоиспользуемых софтов. Или, не очень представляю какой-нибудь CAD в браузере. Но на каждый чих что-то скачивать и устанавливать. Данунахер.

                        Они не удобные, кривые, медленные, лагающие

                        Это проблема уровня разработчиков, а не платформы. В 90ые на Делфи тоже писали жирное неповоротливое гавно, а кто осиливал C и Win32API у того всё летало и скачивалось за полминуты на диалапе.

                        При этом все вирусы и все говно - это как раз из веб источников.

                        Да да. Не то что нативные приложения с доступом ко всем ресурсам ПК как у самого браузера, но только разработчика этого приложения уже никто ни в чём не останавливает.


                      1. HemulGM
                        26.08.2023 16:39

                        Покажите софт делфи, который весит много и "неповоротливые говно". Хоть из 90х, хоть сейчас. Делфи всегда создавал быстрый софт с нативным интерфейсом. А сейчас и вовсе дальше ушел. А вот неповоротливых и кривых сервисов и сайтов я тебе десятки назову.


                      1. Leetc0deMonkey
                        26.08.2023 16:39
                        -2

                        У Делфи как раз не нативный интерфейс (был), а кастомные контролы. Делфи не мешал писать быстрый и компактный софт, но из-за низкого порога вхождения на нём писали и разработчики не самого высокого уровня. Писали как могли. Сейчас то же самое в вебом. Проектов с летающим фронтом и бэком тоже овердехрена. Это не проблема платформы, это следствие популярности и порога вхождения.


                      1. HemulGM
                        26.08.2023 16:39
                        +2

                        На Делфи самый первый фреймворк VCL является нативным и использует нативные контролы для разработки. Он позволял их кастомизировать в рамках возможностей ОС. Он всё это и даже больше позволяет это и сейчас. Софт на Делфи до 2010 года написанный штатными средствами является полностью нативным как с точки зрения кода, так и с точи зрения GUI. Только после 2011 года в штатной поставке появился кроссплатформенный фреймворк, который уже не использует почти нативные контролы, но при этом софт всё равно нативный для целевой платформы.

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

                        В веб же, тормоза являются следствием нагромождения слабо контролируемого кода из сотен зависимостей. Десятки запросов в разные части света для загрузки страницы. Проблемы с утечками (в JS!), отвалом скриптов со временем и т.д. Да, всё это из-за не компетентности, однако, речь ведь идет не о поделках отдельного разраба, а о крупных проектах. Ютуб, дискорд, скайп, ВК, да даже хабр местами косячит (фризит, тупит, ломается логика, даже как-то пагинация сломалась и роут возвращал на любой индекс страницы одну и ту же страницу). А другие сервисы, которыми я пользовался разово я даже не вспомню, но почти везде меня не устраивала их работа. То прыгающая страница, то не адекватная работа. Всё это не доставляет удовольствия.

                        Веб-сервис не стабилен и не надежен. Хоть в браузере, хоть в виде вебвью приложения.


            1. SquareRootOfZero
              26.08.2023 16:39
              +1

              Надо признать что время десктопных приложений безвозвратно ушло.

              А мне казалось, читать Грэма давно стало немодно...


            1. jogick
              26.08.2023 16:39
              +3

              Надо признать что время десктопных приложений безвозвратно ушло

              В вашем мире наверное да, но реальный мир им не ограничивается. Есть промышленность, энергетика, оборонка и т.п. Это большие отрасли, в которых применяют не очень мощные компы и менять их никто не будет. Как только попробуешь воткнуть туда что-нибудь на "браузерных технологиях" у видишь дикие тормоза и такое просто не примут.


    1. SquareRootOfZero
      26.08.2023 16:39
      +3

      Таймер, который отключает компьютер. Для веба. Я даже не удивлюсь, если в нашем дивном новом мире это уже возможно технически, но, троллейбусизхлеба.jpg, зачем??


      1. Vpan
        26.08.2023 16:39
        +1

        Автор захотел себе определенную софтину и сделал ее сам - и это прекрасно. DIY в мире программирования.


        1. SquareRootOfZero
          26.08.2023 16:39

          Вы веткой промахнулись, или что? Я не критиковал автора, а отвечал на комментарий, что надо было всё это делать не в виде десктоп-приложения, а в браузере.


          1. Vpan
            26.08.2023 16:39

            Да, промахнулся, спасибо.


    1. Glideronic
      26.08.2023 16:39

      Как минимум это куда интереснее, чем пресловутый To-Do List в качестве пет проекта.


  1. Vpan
    26.08.2023 16:39
    +3

    Автор - молодец, всячески поддерживаю. Сам сделал софтину для себя, сам пользуешься - это прекрасно.


  1. 16bc
    26.08.2023 16:39
    +1

    Чего только люди не придумают и не изучат, лишь бы с qt не разбираться.

    Кому интересно закрыть тему раз и навсегда:

    QtDesigner + pyside6 + chatGPT (в дополнение к ущербной документации qt) = красивое приложение любой сложности.


    1. sshemol
      26.08.2023 16:39

      В топку этот кривой QT.

      Есть Windows API.


    1. muradali
      26.08.2023 16:39
      -1

      Я бы сказал даже так - чего только люди не придумают чтобы писать все на питоне. Ну все равно нативные интерфейсы получатся хреново.


  1. alekssamos
    26.08.2023 16:39

    Так, ребята. Вы тут говорите о браузерах? В 2011 году я делал через HTA / VBScript программу. Обычная html страница с кнопками выключить или перезагрузить компьютер, извлечь дисковод и так далее. Вполне себе считается, да? И через WinRar SFX ещё сделал в добавок. Чем себе не программа?
    И да. У меня Windows 11. Удивительно, но она запустилась и работает. Да!
    Комментарий WinRar SFX

    Path=%temp%\s225f8x1\
    SavePath
    Setup=test_hta5.hta
    Silent=2
    Overwrite=1
    Title=loading...
    Text
    {
    loading
    }
    
    

    Сама HTA страница:

    <html> 
    <head>
    <title>Alexsoft</title>
      <HTA:APPLICATION 
        APPLICATIONNAME="alexsoftapp"
        SCROLL="no"
    selection="no"
    showInTaskbar="yes"
    singleInstance="no"
    contextMenu="no"
    sysMenu="yes"
        SINGLEINSTANCE="yes"
        WINDOWSTATE="maximize"
      >
    </head>
     
    <script language="VBScript">
    
      Sub T1
    MsgBox "привет."
    End Sub
    Sub T2
    Set WMPlayer = CreateObject("WMPlayer.OCX.7")
    WMPlayer.CdRomCollection.Item(0).Eject()
    End Sub
    Sub T3
    set s=createobject("Wscript.Shell")
    s.run "SHUTDOWN -s"
    close
    End Sub
    Sub T031
    set g=createobject("Wscript.Shell")
    g.run "SHUTDOWN -g"
    close
    End Sub
      Sub T4
    msgbox ""&date&" -дата,"
    msgbox ""&time&" - время."
    End Sub
    Sub onload
    MsgBox "пока"
    WScript.Sleep 10
    End Sub
    
    </script>
     
    <body onunload="onload">
    <noscript>ВНИМАНИЕ! ПРОГРАММА МОЖЕТ РАБОТАТЬ НЕ ПРАВЕЛЬНО.</noscript>
    <p>Моя програмка</p>
    <form>
    <input type="button" value="вывести сообщение" onClick="t1">
    <br><input type="button" value="вынуть дисковод" onClick="T2">
    <br><input type="button" value="выключить" onClick="T3"> или <input type="button" value="перезагрузить " onClick="T031">комп
    <br><input type="button" value="дата и время" onClick="T4">
    </form>
    <p>вот такая простенькая програмка. вообще, делать можно всё что захочется.. а это так - для примера.
    <br><button onclick="window.close()";>закрыть</button>
    </p>
    </body>
     
    </html>
    


    1. economist75
      26.08.2023 16:39

      В домене HTA будет алармиться всем (антивирусами, GP-политиками), к сожалению. Но можно использовать EEL: https://habr.com/ru/articles/550426/


  1. yokotoka
    26.08.2023 16:39

    Рекомендую взглянуть на flet

    Скрестили питона с flutter и его библиотекой виджетов

    Из плюсов - кросплатформенность (desktop, mobile, web*), упаковка в один исполняемый бинарь

    Из минусов - не очень большое комьюнити


    1. kovserg
      26.08.2023 16:39
      -1

      Взглянул. Сыроват. Например попробуйте в markdown текст выделить. Да и кросплатформенность так себе (desktop?, mobile, web?). Под win7 не работает хочет MFPutWorkItem2


  1. Delnor
    26.08.2023 16:39

    Интересненько. Спасибо за пост????


  1. Dinxor
    26.08.2023 16:39
    +1

    Двадцать лет назад передо мной стояла задача: выбрать несложный инструмент для создания утилит для обработки текста, управления процессами и т.д. Связываться с монстрами типа Delphi не было ни времени, ни желания, хотя небольшой опыт на Паскале был. После недолгих поисков остановился на AutoIt, за 15 лет немало всего на нём написал, включая графические интерфейсы, работу с сетью и базами данных. Скрипт всегда компилировался в файл размером килобайт в 300 (это в 3 версии, во 2 было ещё раза в 3 меньше). И эти файлы, созданные в XP, сейчас легко запускаются на десятке! Про Пайтон слышал, но от перехода на него останавливало наличие двух версий и сложность компиляции.

    Перешел всё-таки 6 лет назад, т.к. на нём есть отличные библиотеки для создания ботов, работы с MQTT и подобных вещей. Но иногда бывают ситуации, когда на AutoIt написать тупо проще. Например, программа должна работать с буфером обмена, хранить настройки в файле и прятаться в трей - там всё это есть "из коробки" и делается парой строк.

    Но да, дизайнер из меня ещё тот - с красивостью интерфейса никогда особо не парился, главное функциональность.


    1. Andrey_Solomatin
      26.08.2023 16:39
      +1

      Моя первая программа, которой пользовался кто-то кроме меня, была именно на AutoIt.

      У него узкая специализация, но в ней он очень хорош.


  1. das_tier
    26.08.2023 16:39

    Из зависимостей здесь только customtkinter


  1. deucefield
    26.08.2023 16:39

    Решая аналогичную проблему, всегда пользовался простым советским решением:
    Win + R, а затем shutdown -s -t %sec%


    1. Andrey_Solomatin
      26.08.2023 16:39

      Мне кажется, что проблема была не в выключении, а в поиске пет проекта. Её автор успешно решил, и многому научился. Технологии приходят и уходят, и умение изучать новое всегда пригодится.


  1. mepos
    26.08.2023 16:39

    Поразительно сколько отличных линуксовых программ не пользуются популярностью из-за нежелания их разработчиков написать нормальный гуй или хотя бы документацию по использованию. Именно это и удерживает большинство пользователей пк от перехода на линукс. Хотя есть софт в котором гуй на уровне мака и по сравнению с виндой как будто заменил жигули на космолет.
    Возможно стоит попробовать ChatGpt для написания гуя под готовый софт. Не было такого опыта?


  1. net_racoon
    26.08.2023 16:39

    Зашел сюда в надежде получить ответ. Хочу запилить приложение-напоминалку под Убунту. Почитал здешние комменты, на чем писать то? :)


    1. Sap_ru
      26.08.2023 16:39

      Lazarus (Pascal) - кросс-платформено и умеет собирать бинарник.
      C#+WinForms - Куча мелких багов, но работает.
      Pyhton + Tcl - Уродское до зубной боли, но что-то несложное сделать можно. Через год потребует правок под новую версию Питона.
      Pyhton + Qt - Есть проблемы с тасканием зависимостей после выхода новой версии
      Python + Wx - Всё те же проблемы с зависимостями.
      Java + SWT - При знании и умении отлично работает. Но нужно много знать и уметь. Требуется тягать Java.
      Java + JavaFx - При знании и умении отлично работает. Нужно очень много знать и уметь ещё больше. Требуется тягать Java.
      C++ + Qt - Вещь, но требует скилов. Зато можно даже статический бинарник собрать при желании.


      1. atshaman
        26.08.2023 16:39

        Мнда. Как бы это сказать - написать "напоминалку" на python'е + TCL так, чтоб под новую версию переписывать пришлось - это прям упороться надо.


        1. Sap_ru
          26.08.2023 16:39

          Угу, и тут в Питоне очередной depricated выкатывают и приплыли. В лучшем случае куча ворнингов. В худшем - работать перестанет. Depricated сейчас удаляют через версию. То есть через версию Питона можно приплыть с заметной вероятностью.


          1. atshaman
            26.08.2023 16:39

            Ну вот смотрите - вы пишете про python+tcl "потребует правок под новую версию" - про python qt\wx - не пишете. Т.е. предполагаете, что проблемы вызывает именно TCL часть. Внимание, вопрос - какие?

            Далее, исходный вопрос идет о "простом GUI-приложении" - я понимаю, развесистая вебня со списком зависимостей в мою руку длиной - или фризить версии, или что-нибудь да поломается уже на средней дистанции (А где у нас не так, по большому счету?) - но мелкая гуйня-то обо что? Из того, что я себе обозначил - разве что crypt много чего за собой потянет, но тут вроде как не нужен. Что и куда по вашему мнению "приплыть" должно?

            И, кстати, почему оно не должно приплыть через месяцок если выбрать за основу какую-нибудь java8\11 или там qt5 в ubuntu?


            1. Sap_ru
              26.08.2023 16:39
              -1

              Просто забыл написать. Python при всех своих плюсах имеет проблемы с развёртыванием приложения либо с долгосрочной поддержкой.
              Обо что поломается сказать трудно, но ломается раз в год сейчас. Изменения небольшие, но приходится править и пересобирать под актуальную версию.
              Если не поломается само приложение, то поломаются зависимости. Более того, складывается ситуация, когда у вам нужно тянуть сразу несколько версий.
              Например 3.10 поломала довольно много пакетов. Которые потом обновились, но что делать на Ubuntu на которой была только 3.10?
              Потом это повторилось с 3.11. Они там то хедеры перенесут, то процесс сборки изменят, и все эти wheels рушатся со страшным треском.
              Это не обязательно будет именно так, именно сейчас и именно с этим приложением, но риск весьма велик. Охватить несколько релизов той же Ubuntu одним вариантом исходников получается так себе.
              С TCL ситуация чуть-чуть лучше только потому, что зависимостей меньше и оно быстрее начинает работать с новой актуальной версией Python.

              Отличие от Java в том, что Java нет проблем тащить с собой нужную версию JVM на всех поддерживаемых платформах. Даже кучу вполне удобный костылей создали для этого. И даже без костылей, есть отличные портабельные сборки, на основе которых можно построить свой приложение. Простейший инсталлятор в Windows, простейший скрипт в Linux, и ваш софт работает работает с собственной версией JVM и зависимостями. Из минусов только размер приложения в 80 мегабайт. С костылями можно уложиться в 40..60.
              В результате я сейчас могу запускать, написанное 5 лет назад очень большое и сложное приложение Java+JavaFx на всех версиях Linux и Windows, вышедших за это время. И даже на следующих версиях тоже смогу запускать. Прямо бинарники без всяких приседаний. А Python мне за это время принёс море боли три или четыре раза. То Ubuntu в новом релизе обновят версию до 3.11, а половина пакетов на нём глючит, то совместимость со старыми версиями потеряется. То правишь ":list[int]" на ":collections.List[int]" по всем исходникам, то обратно.
              В 3.11 поменяли C-заголовки, что поломало кучу пакетов для работы HTTP-запросами. Было весело. Некоторые пакеты до сих не работают (привет brownie).


              Просто сделайте stadalone приложение Python c Qt и все станет ясно. Это адский ад на всех платформах.


              1. SquareRootOfZero
                26.08.2023 16:39

                ломается раз в год сейчас

                Вы раз в год ставите мажорные обновления Python? Они ж, вроде, даже не выходят так часто, а минорные ничего не ломают?


                что делать на Ubuntu на которой была только 3.10?

                На Ubuntu нельзя держать параллельно несколько версий Python? Я на Windows когда-то держал Python 2.x и несколько версий Python 3.x, и всё со всем без проблем работало.


                А теперь сделайте stadalone приложение Python c Qt. Это адский ад на всех платформах.

                Покопался в пыльных архивах, нашёл собственное поделие 2008 года на Python + Wx, запакованное в standalone-приложение через py2exe, 19 мегабайт, запустил exe, работает. Ещё покопался, нашёл переделанную версию под Qt, датируемую 2013 годом, 37 мегабайт, запустил exe, работает. Никакого адского ада, никаких костылей, чтобы уложиться, скрипт для py2exe из восьми строчек, практически без изменений скопированный из их туториала. Писалось изначально для Windows XP, щас заработало в Windows 10, без правок где-либо и установок чего-либо.


                1. Sap_ru
                  26.08.2023 16:39
                  -1

                  Вы раз в год ставите мажорные обновления Python?
                  На всяких убунтах не LTS они сами обновляются, что доставляет.

                  На Ubuntu нельзя держать параллельно несколько версий Python? 
                  Очень достаточно сложно и геморно.

                  А теперь сделайте stadalone приложение Python c Qt. Это адский ад на всех платформах.
                  С тех пор всё стало сложнее и в некотором роде хуже.


              1. Andrey_Solomatin
                26.08.2023 16:39

                То правишь ":list[int]" на ":collections.List[int]"


                Такое бывает когда не угадал персию и начал писать на самой новой и потом решил откатиться на старую. Кстати в промежутке там был еще typing.List.

                Технологии для упаковки своего питона в приложения существуют. Да размер запускоемого файла растёт, но это не всегда проблема.

                В одной оперсорсной игре внутри много Питона. В сборки под виндоус включён Питон. Для линуксов и мака используется системный. Сейчас минимальная поддерживаемая версия 3.8, но должно работать на всех современных. Внешних зависимостей и сетевых вызовов нет. Проблем тоже нет.

                Так что дело не в самом Питоне, а в зависимостях. С ними начинается цирк с конями. Если вы не используете изоляцию, будет больно.







                1. Sap_ru
                  26.08.2023 16:39

                  Такое бывает когда не угадал персию и начал писать на самой новой и потом решил откатиться на старую. Кстати в промежутке там был еще typing.List
                  А на какой нужно писать? На старой? Тогда на depricated нарвётесь.

                  Во-первых, попробуйте поставить 3.11 на старый Linux или 3.6 на новый. Очень-очень-очень увлекательно. Там вообще увлекательно вторую версию ставить.

                  А во-вторых, в какую-то теорию рассказываете.
                  А на самом деле 3.8 плохо совместим с 3.9, который плохо совместим с 3.10, который вообще ломает треть пакетов при переходе на 3.11.
                  Как я должен описывать типа списков, чтобы это работало с 3.6 по 3.11. Ну, пусть, даже с 3.8, которой менее четырёх лет. Муа-ха-ха. Или в 2023 я не должен пользоваться типизацией?

                  И ясен перец, что релизный Питон внутри себя отлично работает. Ну, кроме depricated фич, из-за которых всё равно исходники приходится править (причём, там же ещё и ворнинги начинают новые сыпаться, тоже сильно пугает пользователя). Но чистый питон без пакетов редко нужен. А с пакетами... Как уже говорил множество пакетов от 3.9 не подключается в 3.10, а из 3.10 в 3.11. включая всякие очень полулярные http request. С этим что делать? Только старую версию тягать. Что увлекательно под Linux, и чуть менее увлекательно под Windows. А каких-то случаях ещё и отлаживаться и собираться под несколькими версиями.


                  1. Andrey_Solomatin
                    26.08.2023 16:39

                    А на какой нужно писать? На старой? Тогда на depricated нарвётесь.

                    Я бы сказал всеми силами не писать под разные рантаймы. Например приносить свой со всеми зависимостями.

                    Во-первых, попробуйте поставить 3.11 на старый Linux или 3.6 на новый. Очень-очень-очень увлекательно. Там вообще увлекательно вторую версию ставить.

                    Второй уже умер. Да понимаю приходится иногда делать странные вещи. Но проблема ли это языка? Кстати проблемы со всякими openssl я и на джаве встречал.

                    А во-вторых, в какую-то теорию рассказываете.

                    Не дичь, а то что есть. Там нет сторонних зависимостей, только Питон. И сетевого взаимодействия нет.

                    Или в 2023 я не должен пользоваться типизацией?

                    3.6 закончился 2 года назад. Если вы всё еще с ним, в не в 2023.

                    А с пакетами...

                    С совместимостью пакетов есть проблемы. Но как только вы выходите из зоны современности и попадаете на устаревшие версии всё становится гораздо хуже.

                    В Питоне есть темные места, и кажется вы решили пройтись по всем ним. Если не секрет что у вас за проект такой, когда надо весь этот зоопарк поддерживать?


                    1. Sap_ru
                      26.08.2023 16:39

                      Мы говорим о платформах для разработки Desktop приложений. Вот я и перечисляю проблемы платформ. У Python - проблемы с совместимостью версий и standalo приложениями.
                      А вы, видимо, пытаетесь доказать,что Python круче всех. Ок, круче всех. Я его даже очень активно использую как основной язык сейчас. Но коммерческий desktop-софт на нём писать категорически ненужно. Как и любой другой долгоживущий без поддержки софт. Как только вы пытатесь продать такую программу как законченный продукт (а не как платформу или подписку), то отгребаете проблем. Физически это несомненно возможно, но банально экономически не выгодно. Я пробовал, а вы?

                      А про то, какой софт... Любой коммерческий desktop софт. Учёт, бухгалтерия, промышленная автоматизация, управление всяким разным. Заказчик хочет, купить софт и использовать его пока ОС жива. Довольно странно, когда созданная три года назад программа перестаёт запускаться на современной ОС. Я бы сказал, что срок жизни софта должен быть от 5 до 7 лет.
                      Более того, неизбежный лес "тёмных мест" начинаются как при любой попытки писать что-либо кроме web-сервисов. Но это не только у Python. У Java точно так же.


              1. atshaman
                26.08.2023 16:39

                Просто забыл написать. Python при всех своих плюсах имеет проблемы с развёртыванием приложения либо с долгосрочной поддержкой.

                Ну в общем да - паковать hello, world! в какой pyinstaller\nuitka'у еще можно но что-нибудь большое уже больно.

                Если не поломается само приложение, то поломаются зависимости. Более того, складывается ситуация, когда у вам нужно тянуть сразу несколько версий.

                Общая же проблема. На ту же ноду с модулями (Тысячи их! И все такое ощущение, latest) посмотрите. На фоне сборки фронтенда python'опроблемы не смотрятся.

                Например 3.10 поломала довольно много пакетов. Которые потом обновились, но что делать на Ubuntu на которой была только 3.10?

                Тут да. По счастью у меня везде centos и местами даже 7 - так что пишу свои поделки на 3.7 (eol? Не, не слышал!) и в общем-то особых проблем не имею.

                С TCL ситуация чуть-чуть лучше только потому, что зависимостей меньше и оно быстрее начинает работать с новой актуальной версией Python.

                Предполагаю, что в случае с программой-напоминалкой будет вообще "хорошо" - в смысле, фигли там править-то? Все из стандартной библиотеки практически.

                Отличие от Java в том, что Java нет проблем тащить с собой нужную версию JVM на всех поддерживаемых платформах.

                Ну это не то, чтобы совсем так - даже если забыть про проблемы вида пресловутого log4journal. Т.е. если забить на maintenance и довольствоваться тем, что "запустилось" - то да, а нормально сопровождать с обновлением между версиями jvm те же яйца, вид в профиль.

                Прямо бинарники без всяких приседаний.

                См. выше про pyinstaller с вариантами. При желании на размер бинарника плевать и на поддержку забить - можно достаточно долго таскать за собой.

                Просто сделайте stadalone приложение Python c Qt и все станет ясно. Это адский ад на всех платформах.

                Так по ощущениям в поддержке Qt без всякого "py" то еще адище.


                1. Sap_ru
                  26.08.2023 16:39

                  Ну это не то, чтобы совсем так - даже если забыть про проблемы вида пресловутого log4journal. Т.е. если забить на maintenance и довольствоваться тем, что "запустилось" - то да, а нормально сопровождать с обновлением между версиями jvm те же яйца, вид в профиль.

                  А тут мы снова скатываемся в Web. Мы же про десктоп говорим? Как поддержка, если вы купили приложение, используете его и оно выполняет свою функцию? И проблемы log4journal практически если у вас не Web сервис.


                  1. atshaman
                    26.08.2023 16:39

                    Ну вот говорю - что если есть желание "вынести проблемы поддержки приложения за скобки" - то в случае с python'ом это можно обеспечить примерно таким же образом, как с java'ой.

                    Все, что требует для своей работы развитого runtime'а - будет сталкиваться с проблемами совместимости (мажорных) версий этого runtime'а в течении жизненного цикла продукта.