Hi Xiankun,You will want to create a global variable and then pass that to the Button class. Here is an example:import arcpy import pythonaddins class ComboBoxClass(object): """Implementation for ComboBox_addin.combobox (ComboBox)""" def __init__(self): self.editable = True self.enabled = True self.width = 'WWWWWWWW' self.dropdownWidth = 'WWWWWWW' def onFocus(self, focused): if focused: self.mxd = arcpy.mapping.MapDocument('current') layers = arcpy.mapping.ListLayers(self.mxd) self.items = [] for layer in layers: self.items.append(layer.name) def onSelChange(self, selection): global fc fc = arcpy.mapping.ListLayers(self.mxd, selection)[0] class ButtonClass(object): """Implementation for ComboBox_addin.button (Button)""" def __init__(self): self.enabled = True self.checked = False def onClick(self): print fcOn the 'onSelChange' function within the ComboBoxClass I declared 'fc' as a global variable, so now I can use this in the ButtonClass. The above code simply prints the selected layer in the combo box to the python window in ArcMap when the button is clicked.
import arcpy import pythonaddins class ComboBoxClass(object): """Implementation for ComboBox_addin.combobox (ComboBox)""" def __init__(self): self.editable = True self.enabled = True self.width = 'WWWWWWWW' self.dropdownWidth = 'WWWWWWW' def onFocus(self, focused): if focused: self.mxd = arcpy.mapping.MapDocument('current') layers = arcpy.mapping.ListLayers(self.mxd) self.items = [] for layer in layers: self.items.append(layer.name) def onSelChange(self, selection): global fc fc = arcpy.mapping.ListLayers(self.mxd, selection)[0] class ButtonClass(object): """Implementation for ComboBox_addin.button (Button)""" def __init__(self): self.enabled = True self.checked = False def onClick(self): print fc
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.