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.