Select to view content in your preferred language

How to control state of buttons in Python Add-In?

4012
10
Jump to solution
07-02-2013 07:00 AM
IbraheemKhan1
Occasional Contributor
I have bunch of buttons to perform separate tasks within a Python Add-In. Buttons are greyed out and required to be enabled after initial tools run. In the following example, tool1 is turned off after execution using its ID and button1 is enabled. Classes are arranged alphabetically at the time of Add-In construction. This configuration of classes works sometimes and fails at others with message: "NameError: global name 'button1' is not defined". This is confusing as to why it runs sometimes and fails at others. Can anyone please help with explanation as to why is it the case and how to better control the state of buttons without error?

class Calc(object):     """Implementation for test_addin.button1 (Button)"""     def __init__(self):         self.enabled = False         self.checked = False     def onClick(self):         """do something"""  class process(object):     """Implementation for test_addin.tool1 (Tool)"""     def __init__(self):         self.enabled = True         self.cursor = 3      def onMouseDownMap(self, x, y, button, shift):         """do something"""          tool1.enabled = False         button1.enabled = True
Tags (2)
0 Kudos
10 Replies
IbraheemKhan1
Occasional Contributor
It's an optimization in the Add-In framework which makes less sense in Python than it does in C# Add-Ins: it only creates the objects when it needs them.

My response in this thread should give a workaround -- basically, it pre-initializes your button variables.


It worked. Thanks.
0 Kudos