我通过一个信号将模型从非GUI线程发送到GUI线程,以便创建QTableView并设置模型。不幸的是,应用程序崩溃了。在设置QTableView之前,当我在diagram类中发出字典和准备模型时,一切都是有效的。我做错什么了?我使用的是python3.4和PyQt 5.4.1。在
以下是代码片段:
class CheckNE(QObject):
#some code ...
neTreeForEnvAlmsChanged = pyqtSignal(QStandardItemModel, QStandardItemModel)
def check_bts_envalms(self, modelEnvBscAlm): # i call it from other CheckNE member function
#some code, i'm creating modelEnvBtsAlm here...
print('Before emitting neTreeForEnvAlmsChanged')
self.neTreeForEnvAlmsChanged.emit(modelEnvBtsAlm, modelEnvBscAlm)
print('After emitting neTreeForEnvAlmsChanged')
class MainWindow(QMainWindow):
#some code ...
@pyqtSlot(QStandardItemModel, QStandardItemModel)
def retrieveTreeForEnvAlm(self, modelBtsEnv, modelBscEnv):
print('Receiving neTreeForEnvAlmsChanged')
dialogTableWorker = TableDialog(modelBtsEnv, modelBscEnv)
print('Before showing dialog')
dialogTableWorker.show_table_dialog()
print('After showing dialog')
class TableDialog(QDialog, Ui_Dialog_Table):
def __init__(self, modelBts, modelBsc):
print('Beginning init of TableDialog')
super(TableDialog, self).__init__()
self.setupUi(self)
self.tableView.setModel(modelBts) # tableView created in Qt Designer
print('Ending init of TableDialog')
def show_table_dialog(self):
print('Showing TableDialog started')
self.exec_()
print('Showing TableDialog ended')
def main():
app = QApplication(sys.argv)
main_window = MainWindow()
checkNeWorker = CheckNE()
checkNeWorkerThread = QThread()
main_window.show()
main_window.raise_()
checkNeWorker.moveToThread(checkNeWorkerThread)
checkNeWorker.neTreeForEnvAlmsChanged.connect(main_window.retrieveTreeForEnvAlm)
checkNeWorkerThread.start()
app.exec_()
main()
结果:
^{pr2}$但当我在调试中使用断点时:
print('Before emitting neTreeForEnvAlmsChanged')
每件事都很有魅力:
Before emitting neTreeForEnvAlmsChanged
Receiving neTreeForEnvAlmsChanged
Beginning init of TableDialog
After emitting neTreeForEnvAlmsChanged
Ending init of TableDialog
Before showing dialog
Showing TableDialog started
Showing TableDialog ended
After showing dialog
以及
^{pr2}$应该能解决你的问题。在
相关问题 更多 >
编程相关推荐