Monday 24 June 2019

arcpy - Passing Selection from Combo Box into Definition Query using Python AddIn?


I am trying to pass the users selection into a definition query in an addin combo box python script.


Basically, I have a feature class with a field called "SITE". I build a python list from that field (using the search cursor and appending the results) and pass it into the combo box items list. The user will choose a value in the combo box box from that list. I want to further pass the users selection into a definition query.


You can see in my script below, I just tried to pass the selection into the definition query, but it crashes the whole combo box and toolbar. I've tried converting it to string, placing quotes around it, etc and no luck. Obviously I am doing something wrong with. I believe it's how I'm passing the selection. As suggestions?



import arcpy
import pythonaddins

sitename = []
for row in arcpy.SearchCursor("Z:\Geodatabases\Test.gdb\Tesfc"):
sitename.append(row.SITE)

class ComboBoxClass(object):
"""Implementation for SolsticeFigureUpdater_addin.combobox (ComboBox)"""
def __init__(self):

self.items = sorted(sitename)
self.editable = True
self.enabled = True
self.dropdownWidth = 'WWWWWWWWWWWWWW'
self.width = 'WWWWWWWW'
def onSelChange(self, selection):
mxd = arcpy.mapping.MapDocument("CURRENT")

for df in arcpy.mapping.ListDataFrames(mxd):
if df.name == "DFMAIN":

main = arcpy.mapping.ListDataFrames(mxd, "DFMAIN")[0]
if df.name == "DFINSET":
dfinset = arcpy.mapping.ListDataFrames(mxd, "DFINSET")[0]

for lyr in arcpy.mapping.ListLayers(mxd, "", dfmain):
if lyr.name == "PDA Boundary":
lyr.definitionQuery = '"SITE" =' selection

arcpy.RefreshActiveView()
arcpy.RefreshTOC()



def onEditChange(self, text):
pass
def onFocus(self, focused):
pass
def onEnter(self):
pass
def refresh(self):
pass


Answer



I nailed down my issue. I had to wrapt the selection in quotes, but I had to do it using concatenation in the definition query:


lyr.definitionQuery = '"SITE"' + "=" + "'" + selection + "'"

Cheers, Mike


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...