Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 1, 2017 09:41:14

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

При использовании PyQt5, например при нажатии кнопки к которой привязана функция, если что-либо в ней (функции) идет не так - программа “падает” и ничего не выдается об ошибке в консоль IDE (в моем случае PyCharm), возможно кто знает, как это исправить?

upd (решение):

https://stackoverflow.com/questions/34363552/python-process-finished-with-exit-code-1-when-using-pycharm-and-pyqt5

 # Back up the reference to the exceptionhook
sys._excepthook = sys.excepthook
def my_exception_hook(exctype, value, traceback):
    # Print the error and traceback
    print(exctype, value, traceback)
    # Call the normal Exception hook after
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)
# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook
 try:
    sys.exit(app.exec_())
except:
    print("Exiting")

Отредактировано gmaksim (Авг. 1, 2017 12:37:16)

Офлайн

#2 Авг. 1, 2017 10:24:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

Трудно представить, как можно неправильно запустить программу в пайшарме, но кажется, вам это удалось



Офлайн

#3 Авг. 1, 2017 10:25:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

Хотя, может быть просто не туда глядите



Офлайн

#4 Авг. 1, 2017 10:39:43

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

Да как бы не так.
print в функциях работают и выдают информацию (“навесил” для теста). Пример работы консоли и “падения” программы в приложении.

По коду - вызывается класс, в классе идут методы один за другим, в них вызывается GUI другими методами с разными параметрами. Есть метод для сохранения данных в БД, вот там и падает, и это точно какая-то особенность использования в качестве GUI - PyQt5 - так как при использовании tkinter - условно при нажатии кнопки запуска функции сохранения в БД в консоль выводило ошибку, почему она не срабатывала, тут же просто “падает”.

Отредактировано gmaksim (Авг. 1, 2017 10:43:56)

Прикреплённый файлы:
attachment 2.PNG (18,8 KБ)

Офлайн

#5 Авг. 1, 2017 10:47:32

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Вывод ошибки от PyQt5 в консоль

gmaksim
При использовании PyQt5, например при нажатии кнопки к которой привязана функция, если что-либо в ней (функции) идет не так - программа “падает” и ничего не выдается об ошибке в консоль IDE (в моем случае PyCharm), возможно кто знает, как это исправить?
Онлайн
есть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script

Офлайн

#6 Авг. 1, 2017 10:57:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

gmaksim
Ну блин, вы так вопрос задаете “ничего не выдается об ошибке в консоль IDE” как будто у вас нет сообщения об ошибке именно в терминале пайшарма, а другом терминале - все нормально.
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.



Офлайн

#7 Авг. 1, 2017 11:17:21

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

vic57
есть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script
Получилось, только теперь падает на строчке:
conn = sqlite3.connect('DATA//db.sqlite')
sqlite3.OperationalError: unable to open database file
Наверно надо поменять на абсолютный путь?
FishHook
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.
Как-то так и думал, но надеялся, что может есть пути обхода.
python -v my_script похоже на то.

Отредактировано gmaksim (Авг. 1, 2017 11:17:55)

Офлайн

#8 Авг. 1, 2017 11:20:42

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Вывод ошибки от PyQt5 в консоль

gmaksim
sqlite3.OperationalError: unable to open database file
это уже не Qt ошибка

Офлайн

#9 Авг. 1, 2017 11:36:42

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

vic57
это уже не Qt ошибка
Угу, я и не имел ввиду, что это Qt ошибка, разобрался, действительно все выводит. Еще раз спасибо.

FishHook
Однако ‘python -v my_script’ (из терминала) все отлавливает (перед “падением”).

Отредактировано gmaksim (Авг. 1, 2017 11:37:10)

Офлайн

#10 Авг. 1, 2017 11:41:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод ошибки от PyQt5 в консоль

gmaksim
действительно все отлавливает
Что “всё”? Вы же понимаете, что невозможно показать построчный вывод ошибки в скомпилированной сишной библиотеке. Ваша ошибка возникает явно в питоньем коде, поэтому она и отлавливается.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version