Деактивация консоли вредит выполнению программы - PullRequest
0 голосов
/ 04 августа 2020

Как раз когда я подумал, что на 100% готов с приложением, оказалось, что я ошибался. Приложение использует APScheduler для одновременного запуска нескольких событий и до сих пор тестировалось только в режиме разработки, объединяя его в один файл .exe с помощью Pyinstaller с видимой консолью для целей отладки.

Очень понравилось Я наконец могу удалить окно консоли, чтобы передать его другим, я был удивлен, увидев, что удаление консоли, похоже, нарушает работу APScheduler. Время выполнения задач неправильное. Вместо того, чтобы в следующий раз запустить задачу, она устанавливает текущее время, и никакие запланированные события не выполняются. Я попытался перетащить его в cmd, чтобы увидеть, показывает ли он там какие-либо ошибки, но он просто остается пустым. Все остальное, кажется, работает нормально, GUI, код в системном трее, SQL таблицы и т. Д. c ..

Вкратце, я использую код:

pyinstaller --add-data images.png;. --onefile --icon=trayicon.ico -w script.py 

Я также пробовал команду --windowed. Как ни странно, --noconsole отображается как нераспознанный аргумент.

Я попытался превратить его в файл .pyw, но наблюдается та же проблема.

Может ли кто-нибудь объяснить:

  1. Что на самом деле происходит на более глубоком уровне, когда вы удаляете консоль / окно из исполняемого файла? Это могло бы указать мне правильный путь к выяснению беспорядка с APScheduler.

  2. Есть ли способ просто скрыть консоль / окно в фоновом режиме вместо того, чтобы полностью удалить его?

PS: Я использую Windows 10, Anaconda 3, Python 3.7.6, Spyder IDE

1 Ответ

0 голосов
/ 04 августа 2020

РЕШЕНИЕ:

Все еще не уверен, почему (отсутствие) консоли портит программу, но если кто-то столкнется с подобной проблемой в будущем, я исправлю ее, создав файл .exe с окном, и СКРЫТЬ окно консоли, используя следующую команду в самом начале моего кода:

import win32gui

win32gui.ShowWindow(win32gui.GetForegroundWindow(), win32con.SW_HIDE)
...