How are you calling you QInputDialog?
My guess is that you are using the static convenience methods (or exec_) which cause your dialog to become modal, and thus block the main application.
What you probably want to do is:
self.d = QInputDialog(self)
self.d.setModal(False)
self.d.show()
At this point you can either decide to set a connection to a slot to handle when the window is closed,
or subclass it and overload your own accept() method.
# setting a connection
self.d.accepted.connect(handleInputMethod)
def handleInputMethod(self):
print self.d.textValue()
The static methods are good for when you don't need any special access or functionality from the dialog, as it creates it behind the scenes, blocks, and just returns the value and whether it was accepted or rejected.