तुरंत QSettings में परिवर्तन कैसे लागू करें?


15

PyQGIS के साथ, आप विभिन्न सेटिंग्स बदल सकते हैं जैसे कि लेयर्स पैनल में समूह बनाना (या सामग्री की तालिका) बोल्ड:

from PyQt4.QtCore import QSettings
QSettings().setValue("/Qgis/legendGroupsBold", True)

सेटिंग्स लिखी जाती हैं जिन्हें विकल्पों में से या टाइपिंग से देखा जा सकता है:

QSettings().value("/Qgis/legendGroupsBold")
>>> u'true'

लेकिन यह लागू नहीं होता है। मैंने सोचा उपयोग कर रहा हूं

QSettings().sync()

मदद कर सकते हैं लेकिन दुर्भाग्य से नहीं। इसे लागू करने का एकमात्र तरीका जीयूआई पर जाना होगा (Settings > Options ) में फिर OKक्यूजीआईएस पर क्लिक या पुनः आरंभ करना होगा।

वहाँ PyQGIS के माध्यम से यह करने के लिए एक विधि है?


प्रसंग :

मैं यह सुनिश्चित करने के लिए एक परियोजना फ़ाइल में मैक्रो के रूप में जोड़ना चाहता हूं (सौंदर्य प्रयोजनों के लिए) कि केवल समूह नाम बोल्ड हैं और परत नाम नहीं हैं। इसलिए, यह आदर्श होगा यदि परियोजना लोड होने पर QSettings लागू होते हैं (परियोजना बंद होने पर प्रारंभिक सेटिंग्स फिर से लागू की जाएगी)।


जब आप अपने परिवर्तनों को करने के लिए सिंक () कहते हैं, तो क्या आप स्थिति () कहते हैं?
Whyzar

@whyzar - धन्यवाद, लेकिन यह भी परीक्षण किया है और अभी भी कोई बदलाव नहीं हुआ है।
जोसेफ

2
यह बहुत ही अजीब है, हो सकता QSettings().setValue("/qgis/legendLayersBold", False)है कि इसका उपयोग करने के कारण एक बग हो। मुझे लगता है कि यह मुद्दा इस लाइन में है github.com/qgis/QGIS/blob/release-2_18/src/app/…
फ्रैंक राग

1
संभव विधि है, QgisApp::instance()->legend()->updateLegendItemStyles();लेकिन भविष्य के संस्करण में शायद?
फ्रैंक राग

@FranciscoRaga - लिंक के लिए धन्यवाद, यह एक बग जैसा लगता है। मैं एक बग रिपोर्ट पोस्ट करने के बारे में सोच रहा था, लेकिन क्यूजीआईएस 3.0 के जल्द ही आने के बाद, मैं इंतजार करूंगा और देखूंगा कि क्या यह समस्या अभी भी नए संस्करण में मौजूद है =)
जोसेफ

जवाबों:


2

मुझे लगता है कि यह तब तक संभव नहीं है जब तक आप डिफ़ॉल्ट स्थिति के साथ एक कुंजी नहीं लिखते \HKEY_CURRENT_USER\Software\QGIS\qgis\UI\state हैं

वास्तव में, जब हम सॉफ़्टवेयर को पुनरारंभ करते हैं तो यह स्वचालित रूप से हमारे लिए ऐसा करता है।

इस समाधान की जाँच करें:

#!/usr/bin/python
from PyQt4.QtCore import QSettings
QSettings( "QGIS", "QGIS2" ).remove( "/UI/state" )
QSettings( "QGIS", "QGIS2" ).remove( "/ComposerUI/state" )


#(for 1.8 it's QGIS instead of QGIS2 IIRC).

यदि यह काम नहीं करता है, तो आपको उस रजिस्ट्री मान को फिर से लिखने के लिए एक स्क्रिप्ट लिखना होगा।

ऐसा करने के लिए आपको रजिस्ट्री मान में हेरफेर करने के लिए विनर का उपयोग करने की आवश्यकता है ।

यदि आप विंडोज़ का उपयोग करते हैं तो आप regedit.exe के माध्यम से अपनी रजिस्ट्री कुंजी देख सकते हैं।

मैं आशा करता हूं कि इससे तुम्हें सहायता मिलेगी...


आपके उत्तर के लिए धन्यवाद, मुझे लगता है कि मुझे अभी भी QGIS को फिर से शुरू करना होगा जब QGIS द्वारा मैक्रो द्वारा इस स्टार्टअप के दौरान पढ़ने के लिए कुंजी लिखी जाए। अभी भी एक रास्ता खोजने की कोशिश कर रहे हैं :)
जोसेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.