Các PyQGIS Cookbook giải thích những tập tin được phổ biến trong các plugin QGIS. Như bạn có thể thấy ở đó, bạn sẽ chỉ cần ba tệp để chạy một plugin tối thiểu:
__init__.py
metadata.txt
mainPlugin.py
Các __init__.py
tập tin cho phép QGIS biết Plugin thư mục là một mô-đun Python. Nó phải chứa một classFactory(iface)
hàm mà QGIS sử dụng để khởi tạo plugin của bạn, sử dụng lớp Plugin chính của bạn, có trong mainPlugin.py
tệp.
metadata.txt
là nơi bạn chỉ định siêu dữ liệu của plugin, nghĩa là tên của tác giả, tác giả, giấy phép, phiên bản, trang chủ, bugtracker, kho lưu trữ, trong số những thứ khác.
mainPlugin.py
có thể được đặt tên theo những cách khác. Đây là tệp được tham chiếu trong __init__.py
và chứa các hàm bạn liệt kê trong câu hỏi của bạn. Tôi muốn nói rằng tập tin này là cốt lõi của plugin của bạn.
Về Trình tạo plugin QGIS, tôi khuyên bạn nên đọc tài liệu chính thức để có ý tưởng về cách cấu trúc. Tôi thực sự không thích sử dụng plugin như vậy, bởi vì nó tạo ra nhiều thứ bạn không muốn biết trong khi bạn đang học những điều cơ bản về phát triển plugin.
Tôi khuyên bạn nên bắt đầu từ các plugin bạn hoàn toàn hiểu. Đó là, bắt đầu với một cấu trúc plugin rất cơ bản (thậm chí là tối thiểu) và chỉ thêm độ phức tạp khi cần thiết và khi bạn nắm vững các kiến thức cơ bản.
Mặt khác, tôi sẽ cho bạn biết các chức năng bạn liệt kê là gì:
__init__( self, iface )
Đây là hàm tạo của plugin của bạn. Khi QGIS nhận ra một thư mục là một plugin Python, __init__()
phương thức được thực thi và đối tượng giao diện iface
, được chuyển đến plugin của bạn để nó có thể truy cập vào QGIS sau đó.
Bạn nên sử dụng phương pháp này để lưu tham chiếu đến iface
(vì đây sẽ là điểm nhập cảnh của bạn đến các thành phần QGIS) cũng như để khởi tạo các biến khác mà bạn sẽ sử dụng trong các chức năng khác của plugin.
tr( self, message )
Đây là một hàm Python để lấy các bản dịch từ các chuỗi. Tất nhiên bạn sẽ cần cung cấp bản dịch, nhưng bạn làm điều đó trong các tệp Qt khác (cụ thể là trong tệp .ts).
Nói chung, bạn sẽ không cần chức năng này trừ khi bạn sẽ hỗ trợ các ngôn ngữ khác ngoài tiếng Anh. Nó chắc chắn không phải là ưu tiên cho các nhà phát triển PyQGIS mới.
add_action( self )
Đây là chức năng tôi chỉ thấy trong các plugin được tạo thông qua Trình tạo plugin QGIS. Nó giúp bạn thiết lập GUI plugin của bạn. Cá nhân tôi không sử dụng nó trong các plugin của mình.
initGui( self )
Đây là một phương pháp để thiết lập GUI của Plugin trong QGIS. Tại đây, bạn chỉ định xem bạn có muốn có một nút trong thanh công cụ của Plugin QGIS, thanh công cụ tùy chỉnh, một nút bên trong menu QGIS hiện có và / hoặc (không được khuyến nghị) một menu tùy chỉnh mới.
Đây cũng là một nơi tốt để thiết lập các kết nối TÍN HIỆU / SLOT chia sẻ các nút plugin (hoặc các điều khiển khác) và các chức năng của bạn.
unload( self )
Đây là một phương pháp để loại bỏ các widget plugin (nút, menu và những thứ tương tự) của bạn khỏi GUI GUI.
Đây cũng là một nơi tốt để ngắt kết nối TÍN HIỆU và SLOTS mà bạn đã kết nối initGui( self )
.
run( self )
Đây là phương pháp chính của plugin của bạn. Tại đây, bạn đặt mã sẽ chạy khi người dùng nhấp vào nút của plugin. Nhìn chung, bạn bắt đầu bằng cách lấy một số dữ liệu từ dự án QGIS hiện tại và sau đó thực hiện một số chỉnh sửa, xử lý hoặc báo cáo. Điều đó hoàn toàn phụ thuộc vào bạn.
Nếu plugin của bạn có hộp thoại, đây là phương pháp bạn nên mở nó, để người dùng có thể bắt đầu tương tác với hộp thoại. Logic hộp thoại thường được xử lý trong các tệp Python khác, để phân phối mã của bạn và ưu tiên bảo trì và đóng gói.
Lưu ý rằng đó run()
không phải là nơi tốt để đặt kết nối TÍN HIỆU / SLOT, vì làm như vậy, chúng sẽ được đặt mỗi khi bạn mở hộp thoại của plugin, kích hoạt các chức năng (SLOT) của bạn nhiều lần như trong hành vi lẻ trong plugin QGIS: chức năng của tôi là kích hoạt hai lần .
Cuối cùng, cách tốt nhất để học lập trình các plugin QGIS là đọc mã nguồn của các plugin khác. Bắt đầu với những cái đơn giản và khi bạn thành thạo chúng, hãy tiếp tục với những cái phức tạp hơn.
Tôi đã tạo một plugin demo (rất đơn giản) để giúp bạn hiểu cách các plugin QGIS hoạt động. Bạn có thể truy cập nó từ đây . Có hướng dẫn cài đặt trong tệp README. Plugin cho bạn biết, thông qua các hộp thông báo, khi mỗi chức năng bạn yêu cầu được thực thi.