Вам нужно позвонить QtCore.pyqtRemoveInputHook . Я завернул его в свою собственную версию set_trace
:
def debug_trace():
'''Set a tracepoint in the Python debugger that works with Qt'''
from PyQt4.QtCore import pyqtRemoveInputHook
# Or for Qt5
#from PyQt5.QtCore import pyqtRemoveInputHook
from pdb import set_trace
pyqtRemoveInputHook()
set_trace()
И когда вы закончите отладку, вы можете вызвать QtCore.pyqtRestoreInputHook()
, вероятно, лучше всего, когда вы все еще находитесь в pdb, а затем после того, как вы нажмете Enter, и консольный спам происходит, продолжайте нажимать 'c' (для продолжения) до приложение возобновляется правильно. (Мне пришлось по какой-то причине несколько раз нажать «c», он продолжал возвращаться в pdb, но после нескольких нажатий он возобновлялся нормально)
Для получения дополнительной информации Google "pyqtRemoveInputHook pdb". (Действительно очевидно, не так ли?; P)