Câu trả lời:
Đối với bảng điều khiển python:
QgsProject.instance().readPath("./") # also try "../"
Hoặc với
dir(QgsProject.instance())
bạn tìm thấy một cái gì đó như
fileName()
Đối với plugin python (chưa được thử nghiệm!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Để truy cập đường dẫn tệp vectơ, trên lớp hoạt động, mã này hoạt động tốt trong Bảng điều khiển Python:
>>>import os
>>>myfilepath= iface.activeLayer().dataProvider().dataSourceUri()
>>>myfilepath
u'/home/zeito/tiznados_canoa.tif'
>>>(myDirectory,nameFile) = os.path.split(myfilepath)
>>>myDirectory
u'/home/zeito'
>>>nameFile
u'tiznados_canoa.tif'
Nó đã được thử nghiệm với raster 'tiznados_canoa.tif' của tôi dưới dạng một lớp hoạt động.
Nếu bạn muốn truy cập một đường dẫn tệp vectơ, trên một lớp hoạt động, điều này dường như hoạt động:
myfilepath= os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) ) ;
fic = myfilepath + "[% "FILE" %]"
sau đó để mở một hình ảnh hoặc văn bản nằm trong cùng thư mục với mylayer:
from PyQt4 import QtWebKit, QtCore ; vue=QtWebKit.QWebView() vue.setUrl( QtCore.QUrl( fic ) ) ; vue.show()