पायथन का उपयोग करके प्रोजेक्ट चर कैसे बदलें?


10

मैं पायथन कंसोल का उपयोग करके उपयोगकर्ता-परिभाषित प्रोजेक्ट चर (मैन्युअल रूप से परियोजना सेटिंग्स में संपादित किया जा सकता है) का मान बदलना चाहता हूं। मैंने QVExpressionContextScope वर्ग में setVariable () फ़ंक्शन को ट्रैक किया है, लेकिन वास्तव में प्रोजेक्ट सेटिंग्स में चर को बदलने में सफल नहीं हुआ है। मेरा कोड अब तक:

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

मुझे लगता है मैं अलग अभिव्यक्ति संदर्भों में खो रहा हूँ ...

जवाबों:


11

QgsExpressionContextUtils ( https://qgis.org/api/classQgsExpressionContextUtils.html ) देखें। आपको जिस विधि की आवश्यकता है वह है QgsExpressionContextUtils.setProjectVariable, उदा

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

एक चर को हटाने के बारे में क्या? मुझे इसके लिए विधि नहीं मिलीQgsExpressionContextUtils
ismailsunni

ऐसा करने के लिए कोई उच्च स्तरीय API नहीं है। संभवतः आप वैरिएबल को NULLING से निकाल सकते हैं (इसे किसी से सेटिंग नहीं), लेकिन यदि नहीं, तो आपको QgsExpressionContextUtils.setProjectVariables ({}) का उपयोग करने की आवश्यकता है और पूरे लॉट को रीसेट करना होगा। आपको सबसे पहले QgsExpressionContextUtils.projectScope () को जांचना होगा और उन सभी चरों की एक तानाशाही बनानी होगी, जिन्हें आप रखना चाहते हैं। यह आदर्श से बहुत दूर है - लेकिन एपीआई के लिए एक तुच्छ जोड़ भी होगा यदि आप QGIS विकास में शामिल होना चाहते हैं और
जीथब

धन्यवाद @ndawson, यह आपके काम के साथ-साथ रीसेट करने के लिए काम करता है setProjectVariables(preserved_variables)मैंने C ++ कोड की जांच की है, मुझे उम्मीद है कि मैं कार्यक्षमता के लिए योगदान कर सकता हूं।
ismailsunni

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.