J'ai donc écrit un script qui fait ce que je veux encore et encore en utilisant un "while True:" dans un certain intervalle de temps (toutes les 5 secondes en utilisant time.sleep (5)). Jusqu'ici tout va bien, MAIS quand je veux l'arrêter, je ne peux pas.
J'ai essayé Control + C, Control + Break, Escape et il ignore pratiquement mon clavier. La seule façon de l'arrêter est de fermer QGIS. Des idées? De plus, lorsque le script frappe time.sleep (5), QGIS se retire et se fige pendant 5 secondes et je ne peux pas, par exemple, effectuer un panoramique sur la couche, mais je suppose que c'est normal.
Voici mon script:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from qgis.core import *
from qgis.utils import iface
import time
while True:
def change_color():
active_layer = iface.activeLayer()
pipeline=[]
txt=open('C:/users/stelios/desktop/project/Sensor.txt','r')
for line in txt.readlines():
pipeline.append(line.split())
print pipeline
pipeline2=[]
for label,color in pipeline:
if "0" in color:
pipeline2.append([label,"green"])
else:
pipeline2.append([label,"red"])
print pipeline2
elatomatikoi=""
categories=[]
for label,color in pipeline2:
if 'red' in color:
elatomatikoi=elatomatikoi + label+","
symbol = QgsSymbolV2.defaultSymbol(active_layer.geometryType())
symbol.setColor(QColor(color))
category = QgsRendererCategoryV2(int(label), symbol, label)
categories.append(category)
expression = 'id'
renderer = QgsCategorizedSymbolRendererV2(expression, categories)
active_layer.setRendererV2(renderer)
active_layer.setCacheImage(None)
iface.mapCanvas().refresh()
iface.legendInterface().refreshLayerSymbology(active_layer)
elatomatikoi= elatomatikoi[:-1]
for label,color in pipeline2:
if 'red' in color:
QMessageBox.critical(None,"Warning",("Leakage at pipe(s):%s\nCheck Pipeline status " %elatomatikoi))
break
txt.close()
change_color()
time.sleep(5)