Mở bảng thuộc tính bằng PyQgis?


11

Có thể mở bảng thuộc tính từ bảng điều khiển Python hoặc thông qua tập lệnh Python trong QGIS không?

Câu trả lời:


12

Có, bạn có thể, ít nhất là với phiên bản chính mới nhất và 1.8. Đây là một phương thức được thể hiện thông qua iface

// C++ (signature)
void showAttributeTable (QgsVectorLayer *l)

# PyQGIS (example)
iface.showAttributeTable(iface.activeLayer())

Bạn sẽ cần một tài liệu tham khảo từ trước đến QssVectorLayer.

Để chỉnh sửa trực tiếp các tính năng, đây cũng là một phương thức được hiển thị qua iface :

// C++ (signature)
bool openFeatureForm (QgsVectorLayer *l, QgsFeature &f, bool updateFeatureOnly=false)

# PyQGIS (example)
iface.openFeatureForm(iface.activeLayer(), feature, False)

Bạn sẽ cần một tài liệu tham khảo từ trước đến QssVectorLayer và QssFeature trong cả hai trường hợp. Biểu mẫu tính năng được mở và có thể chỉnh sửa được hay không phụ thuộc vào cài đặt ứng dụng và liệu lớp của tính năng có ở chế độ chỉnh sửa hay không.


Ví dụ Python hoạt động tốt với tôi khi ở trong bảng điều khiển Python. Tuy nhiên, tôi đã cố chạy tập lệnh này trong Xử lý, trong đó layer = process.getObject () của một lớp được tải. Từ iface.showAttributionTable (lớp), tôi đã nhận được Lỗi Tên: tên toàn cầu 'iface' không được xác định. Bất kỳ đề xuất?
user25976

@dakcarto Bạn cần nhập iface với 'từ qgis.utils nhập iface'
Mr Purple

@ user25976 Tham chiếu ifacechỉ hoạt động cho bảng điều khiển hoặc tập lệnh chạy từ bên trong QGIS, bao gồm các plugin như Đang xử lý. Đối với giao diện điều khiển, đó là tính năng tự động nhập khẩu để thuận tiện, với tất cả các trường hợp khác cần sự importcủa qgis.utils. Điều này được mô tả ở phần đầu của cuốn sách nấu ăn PyQGIS . Bạn không thể truy cập ifacetrong một ứng dụng độc lập, vì các mô-đun Python không khởi tạo ứng dụng GUI trên máy tính để bàn của QGIS.
dakcarto

1
@dakcarto iface.openFeatureForm (iface.activeLayer (), Feature, false) Điều này hữu ích khi chúng tôi muốn chỉnh sửa tính năng đã chọn nhưng nếu tôi muốn thêm một tính năng mới thì tôi có thể làm điều đó như thế nào? không có tính năng
user99 18/2/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.