[FOSSGIS-Talk] While-Schleife in Python-Plugin um auf Veränderungen in Attributtabelle zu reagieren

Claas Leiner claas.leiner at gkg-kassel.de
Mi Sep 28 16:16:21 CEST 2022


Hallo Kolleginnen und Kollegen,

ich bin ja jetzt auch immer wieder mit Python unterwegs
und versuche folgende umzusetzen:

In einem Punkt-Shapefile (leider Shapefile) gibt es
die Spalte M1. Wenn ein externes Programm auf die DBF zugrieft und den 
Attributwert 50 in M1 einträgt, soll QGIS automatisch zu den 
betreffendem Punkt zoomen.

Ich bekommes es in meinem Plugin hin, das QGIS mit einem Klick auf ein 
Icon automatisch zu den Punkten zoomt

QGIS soll diese Veränderungen jedoch im Hintergrund erkennen und 
automatisch reagieren. Also ich klicke aufs Icon und nichts passiert, 
wenn kein Wert 50 vorhanden ist. Die Schaltfläche bleibt "checked" und 
wenn das externe Programm eine 50 in M1 einträgt, reagiert QGIS, ohne 
das ich ein weiteres mal klicken muss.

Ich habe versucht das folgendermaßen umzusetzen:
Mit einem Klick auf ein Icon wird folgende Funktion aufgerufen:
-----------------------------------

def tis_bau(self, checked):
     vlayer = QgsProject.instance().mapLayersByName("Baeume")[0]

     while checked:
         time.sleep(1)
         expr = QgsExpression('"M1"=50')
         it = vlayer.getFeatures( QgsFeatureRequest(expr) )
         anz = len(list(it))

         if anz > 0:
	#hier die Anwesiungen um zu den Objekten zu zoomen	

         else:
             continue
     else:
         # hier igentetwass
         break
--------------------------------

Die While-Schleife soll im Sekundentakt prüfen, ob der Wert 50 
eingetragen wurde und im Entdeckungsfall die Aktion auslösen.
Wenn jetzt aber keine 50er gefunden werden, friert die While-Schleife 
QGIS ein.
Ist es möglich, den Code so zu zuschreiben, dass die While-Schleife im 
Hintergrund läuft, ohne die  Benutzeroberfläche zu blockieren?
Kann ich mein Ziel mit diesem Ansatz überhaupt erreichen?

Ich freue mich über Ideen,

Viele Grüße,

Claas




-- 
-----------------------------------------
GKG-Kassel - Dr.-Ing. Claas Leiner
QGIS-Support und mehr

Geodatenservice, Kartenwerkstatt &
GIS-Schule Kassel

Wilhelmshöher Allee 304 E
34131 Kassel
Tel. 0561/56013445
claas.leiner at gkg-kassel.de
----------------------------------------
http://www.gkg-kassel.de
----------------------------------------
Unterstützen Sie QGIS
QGIS-DE e.V. | http://qgis.de
QGIS Projekt | http://qgis.org/de/site/


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste