0
我使用QT從python應用程序中使用我的C++庫。它使用回調與UI進行通信。 我的圖書館是'ts'。問題是我的程序有時會崩潰。 據我瞭解,它調用emit()時崩潰,但它很少發生。 我的程序的簡化版本如下所示:Python應用程序在從回調信號中發出信號時崩潰
import ts
...
class Parser(QObject):
sig = Signal(ts.ProgramDescriptions)
ts = ts.Ts()
def init(self):
self.ts.SetProgramChangeCB(SetProgramListCB)
...
class Ui_Dialog(QMainWindow):
def __init__(self, pars):
self.parser = pars
...
def SetProgramListCB(programDesc):
print "SetProgramListCB"
ui.parser.sig.emit(programDesc)
def SetProgramList(programDesc):
print "SetProgramList"
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
Dialog = QDialog()
parser = Parser()
parser.init()
parser.sig.connect(SetProgramList, Qt.QueuedConnection)
parser.Start()
ui = Ui_Dialog(parser)
...
幫助!
這僅僅是周圍的GUI代碼,這是不太可能產生崩潰。這聽起來很像是你的圖書館或'ui.ravisParser.sig.emit'中的問題。您應該在調試器下運行程序以獲取有關崩潰的詳細信息 - 它是什麼直接原因(例如,在無效地址上讀取內存 - 哪一個?)? – phihag
對不起,我是inattantive,並在發佈源代碼時犯了一些錯誤。現在我糾正了它。 我是新手在Python中,所以我不知道如何在調試器下運行我的應用程序。你能推薦我調試器嗎?我的操作系統是Win7。 –
這個編輯稍微澄清一些,但問題仍然只包含GUI代碼,而不是'parser'中的那個,這可能是錯誤的。任何調試器都會執行,例如[WinDbg](http://msdn.microsoft.com/en-us/windows/hardware/gg463009)。 – phihag