Addon: run execute() only when button is clicked
You can also add an invoke method and call WindowManager.invoke_props_dialog:

def invoke(self, context, event):
    return context.window_manager.invoke_props_dialog(self)