[英]To schedule a repeating event in qgis using Python
我必须每n秒在qgis中安排一份工作。 同时,我将能够做其他事情(例如可视化对象的属性)。 我已经在Python中实现了这样的代码:
import time,threading...
interval=60
def job():
....
....
....
threading.Timer(interval,job).start()
threading.Timer(interval,job).start()
当我启动脚本时,它将保持暂停状态,并且不执行任何操作
为了完整起见,我将整个代码放在这里:
import time,threading
import re,glob,os
from PyQt4.QtGui import QColor
interval=5
def job():
lay=qgis.utils.iface.activeLayer()
iterator=range(50)
counter=0
for i in iterator:
if lay<>None and not(re.search("com",lay.name())):
QgsMapLayerRegistry.instance().removeMapLayer(lay.id())
lay=qgis.utils.iface.activeLayer()
dir="/home_local/titan/projDir/data/titan/shapefiles/shapefile/"
lista=os.listdir(dir)
exp="shp"
for file in lista:
if re.search(exp,file):
counter=counter+1
lay=qgis.utils.iface.addVectorLayer(dir+file,file+str(counter),"ogr")
symbols = lay.rendererV2().symbols()
symbol = symbols[0]
if re.search("F30",file):
symbol.setColor(QColor.fromRgb(50,50,250))
else :
symbol.setColor(QColor.fromRgb(150,200,200))
qgis.utils.iface.mapCanvas().refresh()
qgis.utils.iface.legendInterface().refreshLayerSymbology(lay)
lay.setLayerTransparency(30)
threading.Timer(interval,job).start()
threading.Timer(interval,job).start()
注意 没有线程的工作工作。
尝试改用QTimer。 您可以将其超时信号连接到插槽以进行处理(必要时在Python线程中)。
from PyQt4.QtCore import QTimer
timer = QTimer()
timer.timeout.connect(my_slot)
timer.start(1000) # start
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.