QT で Python アプリケーションの C++ ライブラリを使用しています。コールバックを使用して UI と通信します。私のライブラリは「ts」です。問題は、私のプログラムが時々クラッシュすることです。私が理解したように、emit() を呼び出すとクラッシュしますが、めったに起こりません。私のプログラムの簡略版は次のようになります。
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)
...
ヘルプ!