Mehr

Hinzufügen von Feldwerten zu einer QComboBox in PyQGIS

Hinzufügen von Feldwerten zu einer QComboBox in PyQGIS


Ich habe eine Ebene, die "Städte" sagt. Der Layer enthält eine Spalte namens "NAME_1". Meine GUI hat eine QComboBox, in der ich möchte, dass die Werte der Spalte 'NAME_1' allein in der Dropdown-Liste der Combobox angezeigt werden.

Kann mir jemand helfen, ein Snippet in Python bereitzustellen, um einen Wert aus einer bestimmten Spalte zu erhalten und ihn im Kombinationsfeld anzuzeigen?


Da es dafür kein benutzerdefiniertes QGIS-GUI-Widget gibt (zumindest konnte ich es nicht finden), könnten Sie Folgendes versuchen:

aus PyQt4.QtGui import QComboBox lyr = iface.activeLayer() idx = lyr.dataProvider().fieldNameIndex( 'NAME_1' ) uv = lyr.dataProvider().uniqueValues( idx ) cb = QComboBox() cb.addItems( uv )

Beachten Sie, dass wir eindeutige Werte des Felds erhaltenNAME_1, weil ich denke, das ist das gewünschte Verhalten. Andernfalls würden Sie Ihren Benutzern eine Liste mit sich wiederholenden Werten anzeigen, was für einQComboBox.


Werte innerhalb einer Attributtabelle werden in einer Legende in einem Layout mit PyQGIS angezeigt

Ich habe derzeit ein Skript, das Daten in meiner Karte ausführt und sie dann als Layout in Print Composer exportiert. Auf der Karte habe ich einen Legendenschlüssel, der auf die Daten auf der Karte verweist. In meiner Legende habe ich einen gelben Puffer mit dem Titel ‘MM1 1.0 Buffer’. In der Attributtabelle dieser Vektordatei habe ich eine Spalte namens ‘LAC_Population_sum’ mit einem Wert der von einem Erdbeben betroffenen Bevölkerung innerhalb dieses Pufferbereichs. Ich kann jedoch keinen Weg finden, diesen Wert zu erhalten, daher wird er in meiner Legende im Layout angezeigt.

Das Skript, das ich zum Erstellen eines Speicherpuffers verwende, ist:

Meine Attributtabelle für den MM1 1.0 Buffer mit dem Wert von LAC_Population_sum:

Was meine Legende aktuell zeigt:

Mein Code, der das Feld LAC_Population_Sum erstellt:

Eine Antwort

Sie können einen kategorisierten Stil für Ihren Layer erstellen, sodass Sie den Namen des Layers und den Wert des Polygons wie folgt erhalten:

Sie können dies in PyQgis mit diesem Code tun, Sie müssen nur die Farbe und die Deckkraft in den ersten 2 Zeilen ändern:

Sie können auch den Namen der Ebene ändern, um Folgendes zu erhalten: