| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 | |
| 5 """ | |
| 6 This module integrates Tkinter with twisted.internet's mainloop. | |
| 7 | |
| 8 Maintainer: U{Itamar Shtull-Trauring<mailto:twisted@itamarst.org>} | |
| 9 | |
| 10 To use, do:: | |
| 11 | |
| 12 | tksupport.install(rootWidget) | |
| 13 | |
| 14 and then run your reactor as usual - do *not* call Tk's mainloop(), | |
| 15 use Twisted's regular mechanism for running the event loop. | |
| 16 | |
| 17 Likewise, to stop your program you will need to stop Twisted's | |
| 18 event loop. For example, if you want closing your root widget to | |
| 19 stop Twisted:: | |
| 20 | |
| 21 | root.protocol('WM_DELETE_WINDOW', reactor.stop) | |
| 22 | |
| 23 """ | |
| 24 | |
| 25 # system imports | |
| 26 import Tkinter, tkSimpleDialog, tkMessageBox | |
| 27 | |
| 28 # twisted imports | |
| 29 from twisted.python import log | |
| 30 from twisted.internet import task | |
| 31 | |
| 32 | |
| 33 _task = None | |
| 34 | |
| 35 def install(widget, ms=10, reactor=None): | |
| 36 """Install a Tkinter.Tk() object into the reactor.""" | |
| 37 installTkFunctions() | |
| 38 global _task | |
| 39 _task = task.LoopingCall(widget.update) | |
| 40 _task.start(ms / 1000.0, False) | |
| 41 | |
| 42 def uninstall(): | |
| 43 """Remove the root Tk widget from the reactor. | |
| 44 | |
| 45 Call this before destroy()ing the root widget. | |
| 46 """ | |
| 47 global _task | |
| 48 _task.stop() | |
| 49 _task = None | |
| 50 | |
| 51 | |
| 52 def installTkFunctions(): | |
| 53 import twisted.python.util | |
| 54 twisted.python.util.getPassword = getPassword | |
| 55 | |
| 56 | |
| 57 def getPassword(prompt = '', confirm = 0): | |
| 58 while 1: | |
| 59 try1 = tkSimpleDialog.askstring('Password Dialog', prompt, show='*') | |
| 60 if not confirm: | |
| 61 return try1 | |
| 62 try2 = tkSimpleDialog.askstring('Password Dialog', 'Confirm Password', s
how='*') | |
| 63 if try1 == try2: | |
| 64 return try1 | |
| 65 else: | |
| 66 tkMessageBox.showerror('Password Mismatch', 'Passwords did not match
, starting over') | |
| 67 | |
| 68 __all__ = ["install", "uninstall"] | |
| OLD | NEW |