#mysql #python-3.x #tkinter
Вопрос:
Я работаю над мини-инструментом с оконным графическим интерфейсом с Python3, tkinter и MySQL
Сначала код отлично работает с запуском в VS Code Python Terminal. Затем я перехожу к использованию pyinstaller для упаковки исходных файлов в файл .exe
На этом этапе все по-прежнему в порядке.
Пытаясь избавиться от консоли, я добавляю —noconsole в pyinstaller, и происходит что-то странное. Графический интерфейс перестает работать непосредственно перед выполнением и фиксацией в базе данных.
Добавив tkinter.messagebox, я могу обнаружить, что программа больше не работает до или после того, как я назначу командлет MySQL со строкой.format().
Но если я удалю аргумент —noconsole, все вернется на круги своя
В чем здесь может быть проблема?
Отредактировано для примера кода:
без —noconsole всплывают оба окна сообщений. Но с его помощью 2-й mbox никогда не всплывает
if A == True:
tk.mbox('Debug 1')
query1 = "__some_SQL_query__'".format('__some_values')
tk.mbox('Debug 2')
result = execute_query(query1,....)
else:
....
Комментарии:
1. отображается ли что-нибудь в консоли? если так хорошо, то, очевидно, вам нужна консоль, и вы не можете ее не использовать
2. @Matiiss У меня есть 1 функция print() перед назначением строки, но это не кажется проблемой, потому что у меня также есть несколько функций print() в начале приложения. Даже если я прокомментирую все print() в коде, у меня все равно не было прогресса на той же позиции
3. Хорошо, но можете ли вы видеть то, что отображается в консоли при запуске консоли, например, отображается ли что-нибудь? Кроме того, вы сказали о выполнении команды cmd, как именно вы это делаете? Возможно, чтобы выполнить эту команду cmd любым используемым вами методом, вам просто нужна консоль, возможно, попробуйте использовать
subprocess.Popen
4. @Matiiss Я добавил ту часть кода выше, где установлен —noconsole, он никогда не передаст запрос.формат. Он просто останавливается, не выскакивая «Debug2» без каких-либо указаний
5. Но если не добавлять опцию, оба окна сообщений всплывают соответствующим образом и могут успешно выполнить SQL.