ดังนั้นฉันจึงเขียนสคริปต์ที่ทำสิ่งที่ฉันต้องการซ้ำแล้วซ้ำอีกโดยใช้ "ในขณะที่ True:" ในช่วงเวลาหนึ่ง (ทุก ๆ 5 วินาทีโดยใช้ time.sleep (5)) จนถึงตอนนี้ดีมาก แต่เมื่อฉันต้องการหยุดมันฉันก็ทำไม่ได้
ฉันได้ลอง Control + C, Control + Break, Escape แล้วก็ข้ามคีย์บอร์ดของฉันไป วิธีเดียวที่จะหยุดมันได้คือปิด QGIS ความคิดใด ๆ นอกจากนี้เมื่อสคริปต์เปิดใช้งาน time.sleep (5) ชนิด QGIS ของ lags และค้างเป็นเวลา 5 วินาทีและฉันไม่สามารถยกเลเยอร์ได้ แต่ฉันถือว่านี่เป็นเรื่องปกติ
นี่คือสคริปต์ของฉัน:
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)