6 votos

Actualizar el cuadro combinado en el complemento

Tengo un complemento con un cuadro combinado y quiero actualizar la lista del cuadro combinado después de un evento en una de las otras herramientas de la misma barra de herramientas del complemento.

¿Puedo llamar al cuadro combinado de alguna manera para refrescarlo fuera del evento onSelChange del objeto?

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.

3voto

Eternal Owl Puntos 368

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X