Bagaimana cara mengubah variabel proyek menggunakan Python?


10

Saya ingin mengubah nilai variabel proyek yang ditentukan pengguna (dapat diedit secara manual di Pengaturan Proyek | Variabel) menggunakan konsol Python. Saya melacak fungsi setVariable () di kelas QgsExpressionContextScope tetapi belum berhasil benar-benar mengubah variabel dalam pengaturan proyek. Kode saya sejauh ini:

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

Saya kira saya tersesat dalam konteks ekspresi yang berbeda ...

Jawaban:


11

Lihatlah QgsExpressionContextUtils ( https://qgis.org/api/classQgsExpressionContextUtils.html ). Metode yang Anda butuhkan adalah QgsExpressionContextUtils.setProjectVariable, mis

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

Bagaimana dengan menghapus variabel? Saya tidak menemukan metode untuk ituQgsExpressionContextUtils
ismailsunni

Tidak ada API tingkat tinggi untuk melakukan ini. Mungkin Anda bisa menghilangkan variabel PENUH (mengaturnya ke Tidak Ada), tetapi jika tidak, Anda perlu menggunakan QgsExpressionContextUtils.setProjectVariables ({}) dan mengatur ulang seluruh lot. Pertama-tama Anda harus memeriksa QgsExpressionContextUtils.projectScope () dan membuat dict dari semua variabel yang ingin Anda pertahankan. Ini jauh dari ideal - tetapi juga akan menjadi tambahan sepele untuk API jika Anda ingin terlibat dalam pengembangan QGIS dan mengirim melalui permintaan tarik di github ...
ndawson

Terima kasih @ndawson, ini bekerja dengan pekerjaan Anda di sekitar untuk mengatur ulang dengan setProjectVariables(preserved_variables)Saya telah memeriksa kode C ++, saya harap saya dapat berkontribusi untuk fungsionalitasnya.
ismailsunni

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.