当前位置: 首页>>代码示例>>Python>>正文


Python Algorithm.moveToThread方法代码示例

本文整理汇总了Python中algorithm.Algorithm.moveToThread方法的典型用法代码示例。如果您正苦于以下问题:Python Algorithm.moveToThread方法的具体用法?Python Algorithm.moveToThread怎么用?Python Algorithm.moveToThread使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在algorithm.Algorithm的用法示例。


在下文中一共展示了Algorithm.moveToThread方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: OutputTabManager

# 需要导入模块: from algorithm import Algorithm [as 别名]
# 或者: from algorithm.Algorithm import moveToThread [as 别名]

#.........这里部分代码省略.........
                iface.messageBar().pushCritical('QTraffic', message)
                return
            
            # load the layer
            newLayerName =os.path.splitext(os.path.basename(  newOutputLayer ))[0]
            self.outLayer = QgsVectorLayer(newOutputLayer, newLayerName, 'ogr')
            if not self.outLayer.isValid():
                message = self.tr('Error loading vector file {}'.format(newOutputLayer))
                QgsMessageLog.logMessage(message, 'QTraffic', QgsMessageLog.CRITICAL)
                iface.messageBar().pushCritical('QTraffic', message)
                return
    
            self.outLayerId = self.outLayer.id()
            
        # prepare environment
        try:
            self.alg.setProject(self.project)
            self.alg.setLayer( roadLayer )
            self.alg.initConfig()
            self.alg.prepareRun()
        except Exception as ex:
            traceback.print_exc()
            message = self.tr('Error preparing running contex for the algoritm: %s' % str(ex))
            QgsMessageLog.logMessage(message, 'QTraffic', QgsMessageLog.CRITICAL)
            iface.messageBar().pushCritical('QTraffic', message)
            return
        
        # run the self.alg
        self.thread = QtCore.QThread(self)
        self.thread.started.connect(self.alg.run)
        self.thread.finished.connect(self.threadCleanup)
        self.thread.terminated.connect(self.threadCleanup)
        
        self.alg.moveToThread(self.thread)
        self.alg.started.connect(self.manageStarted)
        self.alg.progress.connect(self.manageProgress)
        self.alg.message.connect(self.manageMessage)
        self.alg.error.connect(self.manageError)
        self.alg.finished.connect(self.manageFinished)

        # set wait cursor and start
        QgsApplication.instance().setOverrideCursor(QtCore.Qt.WaitCursor)
        self.thread.start()
    
    def checkOutLayerRemoved(self, layerId):
        ''' check when outLayer has been removed settign semaphore to True
        '''
        if self.outLayerId == layerId:
            QgsMessageLog.logMessage('Completly removed outLayer', 'QTraffic', QgsMessageLog.INFO)
            self.outLayerRemoved = True
        
    def threadCleanup(self):
        ''' cleanup after thread run
        '''
        # restore cursor
        QgsApplication.instance().restoreOverrideCursor()
        
        if self.alg:
            self.alg.deleteLater()
            self.alg = None
        self.thread.wait()
        self.thread.deleteLater()
        
        # remove progress bar
        if self.progressMessageBarItem:
            iface.messageBar().popWidget(self.progressMessageBarItem)
开发者ID:QTrafficmodel,项目名称:QTraffic,代码行数:70,代码来源:output_tab_manager.py


注:本文中的algorithm.Algorithm.moveToThread方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。