Python komut dosyası aracının Parametreleri'nde Açılır liste oluşturulsun mu?


10

Oluşturduğum bir liste alacak ve girişlerden biri olarak bitmiş araçta açılır menü olarak kullanacağım bir python betiğinden bir araç oluşturmaya çalışıyorum (örneğin ekli resme bakın):

resim açıklamasını buraya girin

Kullandığım liste Vermont eyaletindeki tüm kasabaları içeren büyük bir listedir ve bunu bir tablodan komut dosyasında oluşturuyorum (aşağıdaki koda bakın). Benim sorunum şu anda sadece bu liste almak için araç özellikleri ayarlamak ve kullanıcı için bir açılır liste oluşturmak için kullanmak olduğunu sanıyorum. Parametrede kullanmak için listeyi oluşturan kod bloğu şöyledir - herhangi biri aracın bu kod sonu ile ilgili herhangi bir sorun görüyor mu?

import arcpy
arcpy.env.workspace = "Z:\\OPS\\TechnicalServices\\Culverts\\GetCulverts\\GetCulverts.gdb"
towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex"
arcpy.MakeFeatureLayer_management(towns,"towns_lyr")

NameList = []
NameListArray = set()
rows = arcpy.SearchCursor("towns_lyr")
for row in rows:
    value = row.getValue("TOWNNAME")
if value not in NameListArray:
    NameList.append(value)
town = NameList

town = arcpy.GetParameterAsText(0)

Burada, varsayılan doğrulama koduyla birlikte Araç özelliklerinin bir görüntüsü vardır - Bu doğrulama kodunu değiştirmem gerekir mi?

Bu doğrulama kodunu değiştirme hakkında bilgi aradım, ancak açılır listeleri biçimlendirmek için kullanma hakkında bilgi bulamadım.

resim açıklamasını buraya girin

Yanıtlar:


7

Araç doğrulayıcı sınıf kodunu şu şekilde ayarlamayı deneyin:

import arcpy
class ToolValidator(object):
  """Class for validating a tool's parameter values and controlling
  the behavior of the tool's dialog."""

  def __init__(self):
    """Setup arcpy and the list of tool parameters."""
    self.params = arcpy.GetParameterInfo()

  def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""
    return

  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parameter
    has been changed."""
    towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex"
    rows = arcpy.SearchCursor(towns)
    self.params[0].filter.list = sorted(list(set(r.getValue('TOWNNAME') for r in rows)))
    del rows
    return

  def updateMessages(self):
    """Modify the messages created by internal validation for each tool
    parameter.  This method is called after internal validation."""
    return
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.