Làm cách nào để thay đổi biến dự án bằng Python?


10

Tôi muốn thay đổi giá trị của biến dự án do người dùng xác định (có thể được chỉnh sửa thủ công trong Cài đặt dự án | Biến) bằng cách sử dụng bảng điều khiển Python. Tôi đã theo dõi hàm setVariable () trong lớp QssExpressionContextScope nhưng chưa thành công trong việc thay đổi biến trong cài đặt dự án. Mã của tôi cho đến nay:

iface.mapCanvas().mapSettings().expressionContext().scope(0).setVariable('myvar',1)

Tôi đoán rằng tôi đang bị lạc trong các bối cảnh biểu hiện khác nhau ...

Câu trả lời:


11

Hãy xem QssExpressionContextUtils ( https://qgis.org/api/ classQgsExpressionContextUtils.html ). Phương thức bạn cần là QssExpressionContextUtils.setProjectVariable, vd

QgsExpressionContextUtils.setProjectVariable('myvar','hello world')

Còn việc xóa một biến? Tôi đã không tìm thấy phương pháp cho nó trongQgsExpressionContextUtils
ismailsunni

Không có API cấp cao để làm điều này. Có thể bạn có thể thoát khỏi NULLING biến (đặt thành Không), nhưng nếu không, bạn cần sử dụng QssExpressionContextUtils.setProjectVariables ({}) và đặt lại toàn bộ lô. Trước tiên, bạn cần kiểm tra QssExpressionContextUtils.projectScope () và tạo ra một lệnh của tất cả các biến bạn muốn giữ. Thật xa vời với lý tưởng - nhưng cũng sẽ là một bổ sung nhỏ cho API nếu bạn muốn tham gia vào quá trình phát triển của QGIS và gửi yêu cầu kéo trên github ...
ndawson 24/07/17

Cảm ơn @ndawson, nó hoạt động với công việc của bạn để thiết lập lại với setProjectVariables(preserved_variables)tôi đã kiểm tra mã C ++, tôi hy vọng tôi có thể đóng góp cho chức năng.
ismailsunni

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.