Python kullanarak bir proje değişkeni nasıl değiştirilir?


10

Kullanıcı tanımlı bir proje değişkeninin değerini (Proje Ayarları | Değişkenler'de el ile düzenlenebilir) Python konsolu kullanarak değiştirmek istiyorum. Ben izini QgsExpressionContextScope sınıfında setVariable () fonksiyonunu ama aslında proje ayarlarında değişkeni değiştirmede başarılı olamadık. Kodum şu ana kadar:

iface.mapCanvas().mapSettings().expressionContext().scope(0).setVariable('myvar',1)

Sanırım farklı ifade bağlamlarında kayboluyorum ...

Yanıtlar:


11

QgsExpressionContextUtils'e ( https://qgis.org/api/classQgsExpressionContextUtils.html ) bakın. İhtiyacınız olan yöntem QgsExpressionContextUtils.setProjectVariable, örn.

QgsExpressionContextUtils.setProjectVariable('myvar','hello world')

Değişkeni silmeye ne dersiniz? Bunun için bir yöntem bulamadımQgsExpressionContextUtils
ismailsunni

Bunu yapacak üst düzey bir API yok. Muhtemelen NULLING (NULLING) değişkeninden (None (Hiçbiri) olarak ayarlayarak) kurtulabilirsiniz, ancak eğer değilse, QgsExpressionContextUtils.setProjectVariables ({}) kullanmanız ve tüm lotu sıfırlamanız gerekir. Önce QgsExpressionContextUtils.projectScope () öğesini kontrol etmeniz ve saklamak istediğiniz tüm değişkenlerin bir diksiyonunu oluşturmanız gerekir. İdeal olmaktan uzak - ama QGIS gelişimine katılmak ve
github'da

Teşekkürler @ndawson, setProjectVariables(preserved_variables)ben C ++ kodunu kontrol ettik ile sıfırlamak için etrafında çalışma ile çalışır , umarım işlevsellik için katkıda bulunabilir.
ismailsunni

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.