diff options
author | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:16:14 +0300 |
---|---|---|
committer | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:43:30 +0300 |
commit | b8cf9e88f4c5c64d9406af533d8948deb050d695 (patch) | |
tree | 218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/internet/tksupport.py | |
parent | 523f645a83a0ec97a0332dbc3863bb354c92a328 (diff) | |
download | ydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz |
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/internet/tksupport.py')
-rw-r--r-- | contrib/python/Twisted/py2/twisted/internet/tksupport.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/internet/tksupport.py b/contrib/python/Twisted/py2/twisted/internet/tksupport.py new file mode 100644 index 0000000000..846cff0f74 --- /dev/null +++ b/contrib/python/Twisted/py2/twisted/internet/tksupport.py @@ -0,0 +1,78 @@ +# Copyright (c) Twisted Matrix Laboratories. +# See LICENSE for details. + + +""" +This module integrates Tkinter with twisted.internet's mainloop. + +Maintainer: Itamar Shtull-Trauring + +To use, do:: + + | tksupport.install(rootWidget) + +and then run your reactor as usual - do *not* call Tk's mainloop(), +use Twisted's regular mechanism for running the event loop. + +Likewise, to stop your program you will need to stop Twisted's +event loop. For example, if you want closing your root widget to +stop Twisted:: + + | root.protocol('WM_DELETE_WINDOW', reactor.stop) + +When using Aqua Tcl/Tk on macOS the standard Quit menu item in +your application might become unresponsive without the additional +fix:: + + | root.createcommand("::tk::mac::Quit", reactor.stop) + +@see: U{Tcl/TkAqua FAQ for more info<http://wiki.tcl.tk/12987>} +""" + +from twisted.internet import task +from twisted.python.compat import _PY3 + +if _PY3: + import tkinter.simpledialog as tkSimpleDialog + import tkinter.messagebox as tkMessageBox +else: + import tkSimpleDialog, tkMessageBox + + + +_task = None + +def install(widget, ms=10, reactor=None): + """Install a Tkinter.Tk() object into the reactor.""" + installTkFunctions() + global _task + _task = task.LoopingCall(widget.update) + _task.start(ms / 1000.0, False) + +def uninstall(): + """Remove the root Tk widget from the reactor. + + Call this before destroy()ing the root widget. + """ + global _task + _task.stop() + _task = None + + +def installTkFunctions(): + import twisted.python.util + twisted.python.util.getPassword = getPassword + + +def getPassword(prompt = '', confirm = 0): + while 1: + try1 = tkSimpleDialog.askstring('Password Dialog', prompt, show='*') + if not confirm: + return try1 + try2 = tkSimpleDialog.askstring('Password Dialog', 'Confirm Password', show='*') + if try1 == try2: + return try1 + else: + tkMessageBox.showerror('Password Mismatch', 'Passwords did not match, starting over') + +__all__ = ["install", "uninstall"] |