<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Can't figure out how to add a button for a python script in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707810#M54849</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ah okay. Initially my button wasn't showing up so I ran the script in IDLE, got the error, and assumed that was the issue. Now I've done the double-click run and followed the rest of the steps. This time the button is there but it doesn't do anything. I will keep poking away and hopefully get it working. Thanks for the response.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 03 Mar 2014 18:53:53 GMT</pubDate>
    <dc:creator>Emilbrundage</dc:creator>
    <dc:date>2014-03-03T18:53:53Z</dc:date>
    <item>
      <title>Can't figure out how to add a button for a python script</title>
      <link>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707808#M54847</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm trying to create a button that runs a python script.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've been following the help and have reached the point where I test an add-in:&lt;/SPAN&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="http://resources.arcgis.com/en/help/main/10.1/index.html#/Testing_an_add_in/014p00000026000000/" rel="nofollow" target="_blank"&gt;http://resources.arcgis.com/en/help/main/10.1/index.html#/Testing_an_add_in/014p00000026000000/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I run the script makeaddin.py as stated in step 1 and get this error:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Traceback (most recent call last):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; File "C:\E1B8\ScriptTesting\MISC\Tool\makeaddin.py", line 5, in &amp;lt;module&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_path = os.path.dirname(os.path.abspath(__file__))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NameError: name '__file__' is not defined&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Should __file__ been replaced with a path, and somehow that didn't happen for me? If so, can I add it manually just to make things easy on myself?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;makeaddin.py:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import os import re import zipfile&amp;nbsp; current_path = os.path.dirname(os.path.abspath(__file__))&amp;nbsp; out_zip_name = os.path.join(current_path,&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.path.basename(current_path) + ".esriaddin")&amp;nbsp; BACKUP_FILE_PATTERN = re.compile(".*_addin_[0-9]+[.]py$", re.IGNORECASE)&amp;nbsp; def looks_like_a_backup(filename): &amp;nbsp;&amp;nbsp;&amp;nbsp; return bool(BACKUP_FILE_PATTERN.match(filename))&amp;nbsp; with zipfile.ZipFile(out_zip_name, 'w', zipfile.ZIP_DEFLATED) as zip_file: &amp;nbsp;&amp;nbsp;&amp;nbsp; for filename in ('config.xml', 'README.txt', 'makeaddin.py'): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip_file.write(os.path.join(current_path, filename), filename) &amp;nbsp;&amp;nbsp;&amp;nbsp; dirs_to_add = ['Images', 'Install'] &amp;nbsp;&amp;nbsp;&amp;nbsp; for directory in dirs_to_add: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (path, dirs, files) in os.walk(os.path.join(current_path, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directory)): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; archive_path = os.path.relpath(path, current_path) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found_file = False &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for file in (f for f in files if not looks_like_a_backup(f)): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; archive_file = os.path.join(archive_path, file) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print archive_file &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip_file.write(os.path.join(path, file), archive_file) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found_file = True &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not found_file: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip_file.writestr(os.path.join(archive_path, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'placeholder.txt'), &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "(Empty directory)")&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The script I'm trying to turn into a button (at this stage, Tool_addin.py):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy import pythonaddins&amp;nbsp;&amp;nbsp; def selecttoDQ(): &amp;nbsp;&amp;nbsp;&amp;nbsp; #do things##&amp;nbsp; ####################&amp;nbsp; class ListLayers(object): &amp;nbsp;&amp;nbsp;&amp;nbsp; """Implementation for Tool_addin.btn1 (Button)""" &amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False &amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selecttoDQ()&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Mar 2014 18:09:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707808#M54847</guid>
      <dc:creator>Emilbrundage</dc:creator>
      <dc:date>2014-03-03T18:09:42Z</dc:date>
    </item>
    <item>
      <title>Re: Can't figure out how to add a button for a python script</title>
      <link>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707809#M54848</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You don't need to make any edits to the makeaddin.py at all. Usually you only get that error if it is being run through an interpreter. Do you have some strange file associations with .py files by any chance?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Mar 2014 18:20:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707809#M54848</guid>
      <dc:creator>MathewCoyle</dc:creator>
      <dc:date>2014-03-03T18:20:24Z</dc:date>
    </item>
    <item>
      <title>Re: Can't figure out how to add a button for a python script</title>
      <link>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707810#M54849</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ah okay. Initially my button wasn't showing up so I ran the script in IDLE, got the error, and assumed that was the issue. Now I've done the double-click run and followed the rest of the steps. This time the button is there but it doesn't do anything. I will keep poking away and hopefully get it working. Thanks for the response.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Mar 2014 18:53:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707810#M54849</guid>
      <dc:creator>Emilbrundage</dc:creator>
      <dc:date>2014-03-03T18:53:53Z</dc:date>
    </item>
    <item>
      <title>Re: Can't figure out how to add a button for a python script</title>
      <link>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707811#M54850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It looks like the issue is with the script. I tried the example script (zoom to selection) and it worked fine. Is there ever a case where scripts need to be altered to function as a button? My script has no parameters if that matters...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EDIT: Scripting error, problem soloved &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Mar 2014 19:34:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/can-t-figure-out-how-to-add-a-button-for-a-python/m-p/707811#M54850</guid>
      <dc:creator>Emilbrundage</dc:creator>
      <dc:date>2014-03-03T19:34:25Z</dc:date>
    </item>
  </channel>
</rss>

