2

What I am hoping to be able to achieve with this Tool within my Toolbox is to allow the user to input a number of layers and to set all of the labels with the same font settings (font style, color, size, etc.). I started with the font size. Within my getParameterInfo() function, I have defined the following parameters:

 updlayers = arcpy.Parameter( displayName = "Layers with features to be updated", name = "updlayers", datatype = "GPValueTable", parameterType = "Required", direction = "Input") labelFontSize = arcpy.Parameter( displayName = "Label Font Size", name = "labelFontSize", datatype = "GPDouble", parameterType = "Required", direction = "Input") 

Then, within my execute function, I have the following pieces of code:

 updlayers = parameters[1].values labelFontSize = parameters[2].value for layers in updlayers: for labels in layers: labels.showLabels = True for a in labels.labelClasses: a.expression = '"%s" + [Name] + "%s"' % ("<BOL><FNT name='Arial' size='labelFontSize'>","</FNT></BOL>") 

I know that my code works fine if I replace 'labelFontSize' to an actual numerical value. I also attempted to change my expression to instead use labelFontSize as a string:

a.expression = '"%s" + [Name] + "%s"' % ("<BOL><FNT name='Arial' size=str(labelFontSize)>","</FNT></BOL>") 

However, for some reason, the label either doesn't appear at all or it shows the actual expression text as my label. The issue I am having with is obviously within the expression part of my code.

However, how do I apply my labelFontSize variable into this expression?

Am I going the correct route with this or is there an easier way to do this?

1 Answer 1

2

It looks like you are placing your variable labelFontSize inside a string? I would have thought this line:

a.expression = '"%s" + [Name] + "%s"' % ("<BOL><FNT name='Arial' size='labelFontSize'>","</FNT></BOL>") 

would have been something like (I've not tested this!):

a.expression = '"%s" + [Name] + "%s"' % ("<BOL><FNT name='Arial' size='" + str(labelFontSize) + "'>","</FNT></BOL>") 
1
  • You're absolutely right! That actually seems to resolve the issue. Thanks much, I appreciate it. Is there any reason why you have a single quote followed by a double quote when inputting labelFontSize? As in, the code is essentially: ' "labelFontSize" ' Commented Sep 30, 2014 at 23:07

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.