मैंने एक इनपुट मास्क के साथ स्पैटियलाइट डेटाबेस को खिलाने के लिए एक प्लगइन बनाया है। दो क्षेत्र हैं जो किसी वस्तु के न्यूनतम / अधिकतम आयाम का प्रतिनिधित्व करते हैं।
पल में मैं iface.actionMeasure().trigger()
दो पुश बटन "उपाय" के साथ माप उपकरण ( ) को कॉल करता हूं , आयाम पर क्लिक करें और अपने कीबोर्ड के साथ मूल्य को फ़ील्ड्स (QLineEdit) में टाइप करें।
क्या इस बात की संभावना है कि जब मैं माप उपकरण के साथ सही क्लिक (समाप्त माप) करता हूं तो मूल्य स्वचालित रूप से फ़ील्ड (न्यूनतम या अधिकतम, QLineEdit) के लिए प्रतिबद्ध होगा?
- कॉल माप उपकरण (यह काम करता है)
- बायाँ-क्लिक: माप शुरू करें
- और 4. एक बार में: राइट क्लिक करें और कम से कम करने के लिए उपाय उपकरण का कुल मूल्य न्यूनतम फ़ील्ड (QLineEdit)।
अद्यतन 1:
इस सवाल को पूछने के एक दिन बाद मुझे एक लाइनरिंग परत रखने का विचार मिला है जिसे मैं एक माप उपकरण (ST_Length (जियोम)) के रूप में उपयोग कर सकता हूं। लाभ यह है कि आप डेटा से छेड़छाड़ और उसे प्राप्त करने का पूरा नियंत्रण रख सकते हैं। एक नुकसान परियोजना में एक अतिरिक्त परत है।
एक वर्कफ़्लो हो सकता है:
माप पर क्लिक करें: संपादन टॉगल करें, "सुविधा जोड़ें" को सक्रिय करें
एक वस्तु के न्यूनतम आयाम का प्रतिनिधित्व करने वाली लिनेस्ट्रिंग बनाएँ
परिवर्तनों की पुष्टि करें, linestring की लंबाई की गणना करें (ST_Length (geom)), QLineEdit की लंबाई
डायलॉग बंद करें और लिनेस्ट्रिंग को हटा दें (DELETE FROM)
लेकिन मेरा वास्तविक सवाल बना हुआ है। क्या माप उपकरण से सीधे दूरी मान प्राप्त करने का कोई तरीका है?
अपडेट 2:
मदद से अगर जैकब मैं माप उपकरण के कुल मूल्य के साथ अपने QLineEdit को अपडेट कर सकता हूं, जब तक मैं माप उपकरण बंद नहीं करता। फिर मान को '0,000 मीटर' पर सेट किया जाता है। मैंने इसका उपयोग करके इस समस्या को हल किया:
def text_changed(str_measure):
if str_measure == '0,000 m':
pass
else:
self.min.setText(str_measure)
यह काम करता है, लेकिन मुझे नहीं पता कि यह एक उचित समाधान है।