Daha çox

Proqramlı olaraq QGIS alətlər panelindən xüsusi alətlər panelimə necə bir əməliyyat əlavə edə bilərəm?


Bir alət çubuğum var və onsuz da mövcud bir hərəkətə sahib olmasını istəyirəm, ancaq sənədləri yoxlayarkən mövcud olanları deyil, yalnız yeni yaradılan əməliyyatları əlavə etmək üçün üsullar tapdım. Bunun üçün bir yol varmı?

Əlavə etmək istədiyim hərəkət, Xəritədə naviqasiya alətlər panelindəki Toxunma, Zoom və Pan alətidir. Buna bu şəkildə müraciət edə biləcəyimi bilirəm:

qgis.utils.iface.mapNavToolToolBar (). tədbirlər () [0]

Ancaq bununla edə biləcəyim heç bir şey yoxdur.


Ehtiyacınız var:

Yeni bir alət çubuğu əlavə etmək üçün:

alət çubuğu = iface.addToolBar (u'Mənim testim ')

Sonra yeni yaradılmışa yerli əməliyyatı əlavə edinalətlər paneli:

# Pan toolbar.addAction üçün nümunə (iface.actionPan ())

Əməliyyatların tam siyahısını istəyirsinizsə, QGisInterface API sənədlərinə keçin.


Tərəfindən yaradılan kodu nəzərdən keçirmək üçün faydalı ola bilər Plugin Builder plugin, xüsusilə add_action () Plugin nişanlarını alət çubuqlarına və menyulara bağlayan üsuldur.

Bu fraqment ümidverici görünür ...

add_to_toolbar varsa: self.toolbar.addAction (fəaliyyət)

Mövcudluğu necə əldə edəcəyinizi artıq öyrəndinizfəaliyyət(bir QAction obyekti). İndi simvol əlavə etmək istədiyiniz alətlər çubuğunu əldə etmək üçün sadəcə parçaya ehtiyacınız var.

QgisInterface üçün API-yə baxanda artıq bir alət paneli yaratmağınız üçün bir metod olduğu görünür ...

myaction = qgis.utils.iface.mapNavToolToolBar (). tədbirlər () [0] mytoolbar = qgis.utils.iface.addToolBar ("helloworld") mytoolbar.addAction (myaction)

Bunu yalnız konsolda sınadım və işləyir. (Görünmürsə, alətlər panelinin arxa hissəsini sağ vurun və 'helloworld' işarələndiyinə əmin olun)

Redaktə edin

Özünüzü yaratmadığınız mövcud bir alətlər çubuğuna parıltmaq istədiyinizi başa düşdüm.

QgisInterfaceuzanırQObjectolan birfindChild (növü, adı)metod. Bununla birlikdə, bunu konsoldan işə salmaq boş bir siyahı qaytarır

çap qgis.utils.iface.findChildren (PyQt4.QtGui.QToolBar, u'helloworld ') >>> []

İnşallah daha çox Qt biliyi olan biri buna cavab verə bilər. Düşünürəm ki, mövzuları oxumaqla bu kimi məlumatları oxumaqda bir problem ola bilər: /


Videoya baxın: Lesson 3: QGIS Tutorial to clip vector layer in Hindi (Oktyabr 2021).