我還不夠清晰,無法具體說明我的頭銜,但這基本上就是問題所在。我正在用 PyQt 制作一個 QGIS 插件。
腳本
class CreateSomething(QtWidgets.QDialog, FORM_CLASS):
def __init__(self, parent=None):
"""Constructor."""
super(CreateSomething, self).__init__(parent)
self.setupUi(self)
# Only select polygon layers in the layer combo box
self.cmbLyrSelect.setFilters(QgsMapLayerProxyModel.PolygonLayer)
# Emits a signal and connects to a function when layer is changed
self.cmbLyrSelect.layerChanged.connect(self.getLayerInfo)
# Function to get layer info if layer changed
def getLayerInfo(self):
# Selected/current layer in the combo box
currLyr = self.cmbLyrSelect.currentLayer()
# Gets layer centroid
lyrLoc = self.cmbLyrSelect.currentLayer().sourceExtent().center().toString(3)
# Writes layer centroid to line edit
self.linLyrLoc.setText(str(lyrLoc))
# Populates combo box with fields of current layer
self.cmbLyrFields.setLayer(currLyr)
如果插件第一次打開,它不會填充必要的小部件,因為cmbLyrSelect小部件只會在用戶更改圖層時發出信號。
先開

如果圖層被改變

變通方法- 將getLayerInfo方法中的代碼復制到__init__方法中,以便在插件啟動后填充小部件。
class CreateSomething(QtWidgets.QDialog, FORM_CLASS):
def __init__(self, parent=None):
"""Constructor."""
super(CreateSomething, self).__init__(parent)
self.setupUi(self)
self.cmbLyrSelect.setFilters(QgsMapLayerProxyModel.PolygonLayer)
self.cmbLyrSelect.layerChanged.connect(self.getLayerInfo)
currLyr = self.cmbLyrSelect.currentLayer()
lyrLoc = self.cmbLyrSelect.currentLayer().sourceExtent().center().toString(3)
self.linLyrLoc.setText(str(lyrLoc))
self.cmbLyrFields.setLayer(currLyr)
uj5u.com熱心網友回復:
只需在注冊 LayerChanged 回呼之前getLayerInfo顯式呼叫一次__init__:
def __init__(self, parent=None):
"""Constructor."""
super(CreateSomething, self).__init__(parent)
self.setupUi(self)
# Only select polygon layers in the layer combo box
self.cmbLyrSelect.setFilters(QgsMapLayerProxyModel.PolygonLayer)
# Explicitly get layer info on init
self.getLayerInfo()
# Emits a signal and connects to a function when layer is changed
self.cmbLyrSelect.layerChanged.connect(self.getLayerInfo)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363442.html
上一篇:如何在按鈕內使用我的物件?
下一篇:如何從模塊匯入具有組合的類?
