Тоже полезный инструмент, и довольно-таки функциональный. Но, я так понимаю, для его работоспособности необходимо локально развернуть интерпретатор Ruby?
Флаг DETACHED_PROCESS привязан к платформе, его использование нежелательно, чтобы не добавлять лишних проверок на текущую OS. А вот close_fds оказался панацеей, если не трогать std-потоки.
Никогда не задавался этим вопросом, потому что не наблюдал особых неудобств. «Холодный» старт kivy-приложения на 1-3 секунды больше «холодного» старта python-интерпретатора.
В плане выбора фреймворка — проблематично сказать, чем Kivy лучше остальных. Qt и wxPython я детально не рассматривал. Отплясывай от потребностей :) Если есть потребность собирать .apk под android — тогда только Kivy.
Urlrequest — потомок класса Thread. В принципе здесь делаем то же самое, что и твой костыль, только еще и тянем данные по указанному url. А kivy main thread в это время спокойно может прорисовывать интерфейс.
Обрати внимание на то, как перед отображением 2-го окна gif замирает — в этот момент основной поток приложения занят обработкой этой строки:
Не прерывает. Отображение всплывающего окна — это всего лишь создание нового виджета. Как только виджет прорисован — интерпретатор выполняет следующую строку кода.
Статью обновил.
Большое спасибо за подсказку.
P.S. С DETACHED_PROCESS поэкспериментирую завтра, это похоже на выход. Позже отпишусь.
В плане выбора фреймворка — проблематично сказать, чем Kivy лучше остальных. Qt и wxPython я детально не рассматривал. Отплясывай от потребностей :) Если есть потребность собирать .apk под android — тогда только Kivy.
Urlrequest — потомок класса Thread. В принципе здесь делаем то же самое, что и твой костыль, только еще и тянем данные по указанному url. А kivy main thread в это время спокойно может прорисовывать интерфейс.
Обрати внимание на то, как перед отображением 2-го окна gif замирает — в этот момент основной поток приложения занят обработкой этой строки:
Если хочешь избавиться и от этого — создавай RstDocument в отдельном потоке и callback'ом отображай 2-е окно. Имхо — это уже лишнее.
Почитай про объекты kivy.clock.Clock и kivy.network.urlrequest.Urlrequest