Я использую Twisted с GTK, и следующий код запускается, когда не удается установить соединение:
def connectionFailed(self, reason):
#show a "connect failed" dialog
dlg = gtk.MessageDialog(
type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
responseDF = defer.Deferred()
dlg.set_title("Connection Error")
def response(dialog, rid):
dlg.hide_all()
responseDF.callback(rid)
dlg.connect("response", response)
dlg.show_all()
self.shutdownDeferreds.append(responseDF)
self.shutdownDeferreds
- это список отсрочек, который настроен так, что реактор не останавливается, пока все они не будут вызваны.
Теперь я случайно нажал CTRL+C
в то время, когда не удалось установить соединение. Диалог всплыл, но когда я нажимаю Close
, я получаю:
Traceback (most recent call last):
File "C:\Users\DrClaud\bumhunter\gui\controller.py", line 82, in response
dlg.hide_all()
NameError: free variable 'dlg' referenced before assignment in enclosing scope
Traceback (most recent call last):
File "C:\Users\DrClaud\bumhunter\gui\controller.py", line 82, in response
dlg.hide_all()
NameError: free variable 'dlg' referenced before assignment in enclosing scope
Есть идеи, почему это может произойти?