Причина, по которой плагин начинает выполнять расчет сразу после запуска, может быть связана с тем, что в коде плагина используется метод, который автоматически запускает расчет без ожидания нажатия кнопки пользователем.
Чтобы исправить проблему с расчетом суммы определенного показателя выбранных объектов в плагине QGIS, нужно убедиться, что привязка кнопки к методу расчета осуществляется корректно. Вы можете использовать следующий код в вашем плагине:
```python
class MyPlugin:
def __init__(self, iface):
self.iface = iface
self.dockwidget = MyPluginDockWidget()
self.dockwidget.pushButton.clicked.connect(self.calculate_sum)
def calculate_sum(self):
selected_features = self.iface.activeLayer().selectedFeatures()
total_sum = sum([feature['attribute'] for feature in selected_features])
print(total_sum)
class MyPluginDockWidget(QtWidgets.QDockWidget, Ui_MyPluginDockWidget):
def __init__(self):
super().__init__()
self.setupUi(self)
```
Чтобы решить ошибку 'TypeError: argument 1 has an unexpected type 'NoneType', убедитесь, что вы правильно обрабатываете случай, когда пользователь не выбрал объекты на активном слое. Можете добавить проверку на наличие выбранных объектов перед выполнением расчета суммы:
```python
def calculate_sum(self):
layer = self.iface.activeLayer()
if layer:
selected_features = layer.selectedFeatures()
if selected_features:
total_sum = sum([feature['attribute'] for feature in selected_features])
print(total_sum)
else:
print('No selected features')
else:
print('No active layer')
```
Надеюсь, это поможет вам исправить проблему с вашим плагином в QGIS.