Thay đổi tên hiển thị của lớp với PyQGIS?


8

Tôi đã xử lý một loạt các lớp vectơ và bây giờ tên hiển thị cho mọi tệp bị "hòa tan" khi truy cập layer.name()hàm trong QGIS. Tôi đã đọc trong câu trả lời này từ phần dưới cho đến Thay đổi tên lớp của vectơ đầu ra từ tập lệnh xử lý trong QGIS? , rằng tôi có thể đặt tên thành tên tệp nhưng không may quá muộn.

Tôi có thể đưa tất cả các tệp trong dự án của mình vào danh sách với

layers = iface.mapCanvas().layers()

và tất cả các tên với điều này:

names = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values()]

Với sự giúp đỡ của câu trả lời này để lấy đường dẫn của dự án hoặc tệp lớp trong PyQGIS? , Tôi có thể lấy tên của tệp tôi đang làm việc với:

import os 
real_names = []
for li in layers:
   (myDirectory,nameFile) = os.path.split(li.dataProvider().dataSourceUri())
   real_names.append(nameFile.split("|")[0]

Đọc tài liệu API cho QssVectorLayer không giúp tôi. Điều tôi muốn là đổi tên các tập tin để hiển thị tên tệp dưới dạng tên hiển thị. Làm thế nào để lưu trữ với bảng điều khiển python?

Câu trả lời:


7

Bạn có thể sử dụng một cái gì đó như sau để đổi tên tất cả các lớp thành tên tệp tương ứng của chúng (không bao gồm phần mở rộng):

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = os.path.splitext(os.path.basename(layer.source()))[0]
    layer.setLayerName(basename)
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.