Я регулярно использую PyDev в Eclipse для разработки Python. Тем не менее, я пытаюсь PyQt впервые в той же среде. Он работает хорошо, за одним исключением. Если ошибка программы в любом месте цикла основного события Qt, в том числе внутри моего собственного кода, информация об ошибке не выводится на консоль PyDev.Отладка приложения PyQt с использованием PyDev + Eclipse
Для демонстрации этого я создал следующее простого PyQt приложения:
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
# test.ui contains a single Push Button named pushButton
base, form = uic.loadUiType("../ui/test.ui")
class MainWindow(base, form):
def __init__(self, parent=None):
super(base, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.button_pressed)
def button_pressed(self):
print('button pressed')
print(invalid_variable) # intentional error
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle("fusion")
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
Если я помещаю намеренную ошибку, такие как print(invalid_variable)
в любом месте после if __name__ == '__main__':
и перед командой app.exec_()
, программа правильно оканчивающуюся с TRACEBACK и ожидаемая NameError: name 'invalid_variable' is not defined
. Однако, если я нажму кнопку в своем диалоговом окне, используя приведенный выше код, на консоли появится button pressed
, но затем приложение прекратит работу без каких-либо ошибок в консоли. Другие операции отладки, такие как точки останова и выражения, работают нормально.
Ожидается ли такое поведение? Если да, то что вы рекомендуете для облегчения отладки PyQt-приложений в этой среде. Если нет, я буду благодарен за понимание того, что мне нужно сделать, чтобы исправить эту проблему.
- Python версии: питон-3.4.3.amd64
- PyDev версия: PyDev Затмения 4.3.0.201508182223
- PyQt версия: PyQt5-5.5-GPL-Py3.4-Qt5.5.0-x64
Update 2015-09-30:
при запуске тестового приложения непосредственно с питоном .exe, он корректно выводит ошибку на stderr в обоих сценариях ошибок. Таким образом, этот вопрос кажется специфичным для среды PyDev. Кроме того, я создал полностью новое рабочее пространство Eclipse с настройкой только интерпретатора Python и снова проверил мой тест на недавно созданном проекте PyDev, используя тот же исходный код. Результаты были одинаковыми.