Although I would love to be proved wrong, I believe that ESRI has not found a way to get GUI interfaces developed in Python to interact compatibly with ArcMap. They both compete for OS attention and identical resources and generate errors or crashes. So I have not heard of a way to make a python GUI part of an ArcMap extension.
As an alternative, we are integrating Toolbox/Scripts that have the various parameters predefined and launch these toolboxes per the appropriate Python Add-In event and button, tool or menu. That is, the Toolbox acts as the GUI and is opened at opportune moments (during specific events of the various tools we employ in the Python Add-Ins).For example, here is a ToolClass that implements the onRectangle def that we 'do some stuff', then launch a Toolbox .tbx".
class ToolClass2(object):
"""Implementation for my_addin.tool (Tool)"""
def __init__(self):
self.enabled = True
self.shape = "Rectangle"
def onRectangle(self, rectangle_geometry):
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
ext = rectangle_geometry
thepoly = arcpy.Polygon(arcpy.Array([ext.lowerLeft, ext.lowerRight, ext.upperRight, ext.upperLeft]),df.spatialReference)
# '...do stuff
#open the .tbx
pythonaddins.GPToolDialog('\\\\theUNCpath\ToolShare\geoproc\MyToolbox.tbx', 'TheScriptToRun')
"TheScriptToRun" has been predefined with the desired input parameter types. The code in this Toolbox script peforms the required processing using the parameters input by the user (Dates, Date Ranges, Folders, FGDB's and all kinds of other things such as combo box drop downs and radio button lists).