Por fin he conseguido solucionar esto. Lo conseguí añadiendo un método en la clase del cuadro combinado, los inicié en la clase del botón (desde donde quería refrescar el cuadro combinado) y luego llamé a los métodos desde la clase del botón.
import arcpy
import pythonaddins
cboSetup1 = None
cboSetup2 = None
class btn1(object):
"""Implementation for Class_addin.button (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
combo1 = cbobox1()
combo1.btnPopulate()
combo2 = cbobox2()
combo2.btnPopulate()
class cbobox1(object):
"""Implementation for Class_addin.combobox (ComboBox)"""
def __init__(self):
self.editable = True
self.enabled = True
self.dropdownWidth = 'WWWWWW'
self.width = 'WWWWWW'
def onFocus(self, focused):
self.items = cboSetup1
def btnPopulate(self):
mxd = arcpy.mapping.MapDocument("CURRENT")
self.items = []
for layer in arcpy.mapping.ListLayers(mxd):
self.items.append(layer.name)
global cboSetup1
cboSetup1 = self.items
class cbobox2(object):
"""Implementation for Class_addin.combobox_1 (ComboBox)"""
def __init__(self):
self.editable = True
self.enabled = True
self.dropdownWidth = 'WWWWWW'
self.width = 'WWWWWW'
def onFocus(self, focused):
self.items = cboSetup2
def btnPopulate(self):
mxd = arcpy.mapping.MapDocument("CURRENT")
self.items = []
for layer in arcpy.mapping.ListLayers(mxd):
self.items.append(layer.name)
global cboSetup2
cboSetup2 = self.items
0 votos
Puedo ver su solución de código por favor, tengo el mismo problema. ¡Necesito vincular un par de combos. gracias y saludos!
0 votos
¡Bienvenido a GIS-SE! Una cosa: esto sería un buen comentario a la respuesta anterior, pero no es en sí mismo una respuesta a la pregunta.