أكثر

إرسال إشارة عند تعديل السمات - QGIS 2.6

إرسال إشارة عند تعديل السمات - QGIS 2.6


بالنسبة لمكوِّن QGIS 2.6 python الإضافي ، أحاول إرسال إشارة عند تغيير قيمة السمة (يتم تحديث أو إضافة قيم ميزة موجودة وقبول مربع حوار نموذج السمة). يجب أن تتصل هذه الإشارة بعد ذلك بوظيفة أخرى. لاحظ أنه لا تتم إضافة العنصر (لقد كان موجودًا بالفعل ، ويتم تعديل السمات بعد تحديد عنصر أثناء وجوده في وضع التحرير). هذا هو السبب في أنميزة مضافةإشارة لا تعمل.

حتى الآن ، حاولت استخدامالسمةValueChanged,انتهى الأمروطبقة معدلةإشارات من فئة طبقة المتجه بهذه الطريقة دون نجاح.

def myFunction (self): self.myLayer.attributeValueChanged.connect (self.myOtherFunction) def myOtherFunction (self): self.myLayer.dostuff self.dlg.show ()

لقد اختبرتالسمةValueChangedSIGNAL في مكون إضافي للاختبار تم إنشاؤه من الصفر باستخدام QGIS v.2.6.1

يمكنك توصيل SIGNAL بالفتحة الخاصة بك بهذه الطريقة (لقد فعلت ذلك في بلدييركض()طريقة):

def run (self): self.lyr = self.iface.mapCanvas (). الطبقات () [0] self.lyr.attributeValueChanged.connect (self.mySlot)

وبعد ذلك ، لديك خياران لكتابة الفتحة الخاصة بك (انظرفتحةوmySlot2):

def mySlot (self): QMessageBox.information (self.iface.mainWindow () ، "اختبار" ، "تم تغيير السمات !!!" ، QMessageBox.Ok) def mySlot2 (self، fid، idx، v): QMessageBox.information (self.iface.mainWindow ()، "Test"، "تم تغيير السمات للميزة" + str (fid)، QMessageBox.Ok)

كلتا الفتحتين تعملان ، فقط استبدلهماself.mySlotبواسطةself.mySlot2في طريقة الاتصال أعلاه إذا كنت تريد التبديل بينهما.

إذا كنت ترغب في الحصول على البرنامج المساعد الاختباري ، قم بتشغيله على QGIS الخاص بك ، وإلقاء نظرة على الكود ، يمكنك الوصول إليه هنا. تجد تعليمات التثبيت والاستخدام في ملف README.


لذا فإن الحدث الذي يعمل هو attributeValueChanged. أنا ببساطة بحاجة إلى إضافة بعض الحجج إلى وظيفتي ، كما ذكر مستخدم آخر. هذا يعمل الآن:

def myFunction (self): self.myLayer.attributeValueChanged.connect (self.myOtherFunction) def myOtherFunction (self، fid، idx): self.myLayer.dostuff self.dlg.show ()

شاهد الفيديو: QGIS: Georeferencing raster data without coordinates