I am trying to create a Python Toolbox tool which is supposed to add two fields State
and StateAbb
to selected Shapefile from selected combobox.
How I can add a Combobox which contains a list of US states to the Tool?
import arcpy class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "states" self.alias = "states" # List of tool classes associated with this toolbox self.tools = [states] class states(object): def __init__(self): self.label = "states Tool" self.description = "Add and Insert Value from Combo" self.canRunInBackground = False def getParameterInfo(self): param0 = arcpy.Parameter( displayName="1- State Street Layer", name="in_features", datatype="GPFeatureLayer", parameterType="Optional", direction="Input" ) params = [param0] return params def execute(self, params, messages): """The source code of the tool.""" arcpy.AddField_management(params[0],"area","TEXT","#","#","#","#","NULLABLE","NON_REQUIRED","#") arcpy.CalculateField_management(params[0],"area","!shape.area@squaremeters!","PYTHON_10.3","#") return
I'm not sure you can add a combo box to an arcpy tool; I kind of think comboboxes are a pythonadding thing. All I see when I google arcgis and combobox are references to the addin...
Creating a Python Add-In Combo Box—Help | ArcGIS Desktop
One of these folks may know for sure:
I pretty much create tools from scripts, create a tool in my toolbox, and use the Parameter setup in for the tool to create combo boxes. I just created one today for one of my tools (for creating some mosaic data bases).
you can set a default if you want...I didn't want one. My list of values:
Then accessing in my script....
import arcpy
import sys
def myMsgs(message):
arcpy.AddMessage("{0}".format(message))
print("{0}".format(message) )
typeList = arcpy.GetParameterAsText(6)
myMsgs(" - the typeList {0}".format(typeList))
if not typeList:
#mdList = ["rgb", "DEMEllipsoidal"] #, "DEMEEllipsoidal", "DEMOrthometric", "pan", "cir"]
#mdList = ["cir", "DEMEllipsoidal", "DEMOrthometric"]
myMsgs("Can run manually by modifying list and uncommenting one of the above.")
sys.exit()
else:
mdList = typeList.split(";")
myMsgs(" --- the mdList is {0}\n".format(mdList))
#sys.exit()
Sorry this is a bit messy. This is a work in progress and just added that in (and was testing) for the last item on the list. But wanted to make it available for other in my org in the future.
Note sure if this will help or not, but it's there.
(Funny, I couldn't get this to work last week and it was easy today.....must have been the cold med fuzziness)
edit...forgot to add a pic of the UI
Hi Rebecca - I know this is a bit dated and sorry to dredge it back up, but I'm trying to figure out how to add a combo box to a python tool. My understanding is that a combo box combines an editable field with a drop down list - so the user is not bound to entering just the fields in the drop down list (this is what I want). Your image looks more like a multi-select input field. Do you know if a combo box (what I'm seeking) is possible? Thanks
a listbox serves the same purpose as a combobox in that they have the same listeners and event scripts (or they used to). A combobox only served a purpose of taking up less real estate on the dialog especially if you had a longish list of entries to fill. Unfortunately the dialog interface isn't documented anywhere... for all we know it could be the Dialog Designer in disguise
Bengi Geoca - as you can see there is wealth of knowledge here. Being a certified googler, I tried a slightly different search after reading Rebecca Strauch, GISP post. I found this: