Also habe ich ein Skript geschrieben, das in einem bestimmten Zeitintervall (alle 5 Sekunden mit time.sleep (5)) immer wieder mit einem "while True:" macht, was ich will. So weit so gut, ABER wenn ich damit aufhören will, kann ich es einfach nicht.
Ich habe Strg + C, Strg + Pause, Escape ausprobiert und meine Tastatur wird praktisch ignoriert. Die einzige Möglichkeit, dies zu stoppen, besteht darin, QGIS zu schließen. Irgendwelche Ideen? Wenn das Skript auf time.sleep (5) trifft, verzögert sich QGIS und friert 5 Sekunden lang ein, und ich kann beispielsweise die Ebene nicht schwenken, aber ich gehe davon aus, dass dies normal ist.
Hier ist mein Skript:
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)