2017-10-20 9 views
0

GUIQT 디자이너으로 만들려고합니다. 내 .ui 디자이너 파일을 .py으로 변환했습니다. 내가 플러그인을 열 때Python AttributeError : QGIS Plugin에 객체가 없습니다.

from PyQt4.QtCore import QSettings, QTranslator, qVersion, QCoreApplication 
from PyQt4.QtGui import QAction, QIcon 
from qgis.core import * 
import resources 
from delete_feature_dialog import DeleteFeatureDialog 
import os.path 

class DeleteFeature: 

    def __init__(self, iface): 
     # Save reference to the QGIS interface 
     self.iface = iface 
     # Declare instance attributes 
     self.actions = [] 
     self.menu = self.tr(u'&DeleteFeature') 
     self.toolbar = self.iface.addToolBar(u'DeleteFeature') 
     self.toolbar.setObjectName(u'DeleteFeature') 

    def add_action(
     self, 
     icon_path, 
     text, 
     callback, 
     enabled_flag=True, 
     add_to_menu=True, 
     add_to_toolbar=True, 
     status_tip=None, 
     whats_this=None, 
     parent=None): 

     # Create the dialog (after translation) and keep reference 
     self.dlg = DeleteFeatureDialog() 

     .... 

     return action 

    def initGui(self): 
     icon_path = ':/plugins/DeleteFeature/icon.png' 
     self.add_action(
      icon_path, 
      text=self.tr(u''), 
      callback=self.run, 
      parent=self.iface.mainWindow()) 

    def run(self): 
     #this code will populate the combo box with all vector layer 
    self.dlg.layerListCombo.clear() 
    layers = self.iface.legendInterface().layers() 
    layer_list = [] 
    for layer in layers: 
      layerType = layer.type() 
      if layerType == QgsMapLayer.VectorLayer: 
       layer_list.append(layer.name()) 
    self.dlg.layerListCombo.addItems(layer_list) 
     # show the dialog 
     self.dlg.show() 
     # Run the dialog event loop 
     result = self.dlg.exec_() 
     # See if OK was pressed 
     if result: 
      # Do something useful here - delete the line containing pass and 
      # substitute with your code. 
      selectedLayerIndex = self.dlg.layerlistcombo.currentIndex() 
      selectedLayer = layers [selectedLayerIndex] 
      ..... 

그런 다음, 나는 다음과 같은 오류가 발생합니다 : : 이것에 대한

'DeleteFeatureDialog' objectObject has no attribute 'layerlistcombo'in QGIS Plugin

어떤 제안

여기 내 코드입니다.

selectedLayerIndex = self.dlg.layerlistcombo.currentIndex() 

을하지만, 당신이 작성한한다 : 당신은 당신의 코드에서 이전과 마찬가지로 (

selectedLayerIndex = self.dlg.layerListCombo.currentIndex() 

뿐만 아니라 소문자를 작성할 때 낙타 표기법을 알

+0

이 대화 상자에 콤보 박스가 있습니까? 개체 이름은 layerlistcombo입니까? 아마도 아닙니다. –

답변

0

은 당신이 쓴 것 같다), 아마도 No Attribute 오류가 발생합니다.