-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy path__init__.py
55 lines (43 loc) · 1.74 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# _tkinter package -- low-level interface to libtk and libtcl.
#
# This is an internal module, applications should "import tkinter" instead.
#
# This version is based PyPy which itself is based on cffi, and is a translation of _tkinter.c
# from CPython, version 2.7.4.
import sys
class TclError(Exception):
pass
from .tklib_cffi import ffi as tkffi, lib as tklib
from .app import TkApp
from .tclobj import TclObject as Tcl_Obj
from .app import FromTclString, ToTCLString
TK_VERSION = FromTclString(tkffi.string(tklib.get_tk_version()))
TCL_VERSION = FromTclString(tkffi.string(tklib.get_tcl_version()))
READABLE = tklib.TCL_READABLE
WRITABLE = tklib.TCL_WRITABLE
EXCEPTION = tklib.TCL_EXCEPTION
DONT_WAIT = tklib.TCL_DONT_WAIT
def create(screenName=None, baseName=None, className=None,
interactive=False, wantobjects=False, wantTk=True,
sync=False, use=None):
return TkApp(screenName, baseName, className,
interactive, wantobjects, wantTk, sync, use)
def dooneevent(flags=0):
return tklib.Tcl_DoOneEvent(flags)
def _flatten(item):
def _flatten1(output, item, depth):
if depth > 1000:
raise ValueError("nesting too deep in _flatten")
if not isinstance(item, (list, tuple)):
raise TypeError("argument must be sequence")
# copy items to output tuple
for o in item:
if isinstance(o, (list, tuple)):
_flatten1(output, o, depth + 1)
elif o is not None:
output.append(o)
result = []
_flatten1(result, item, 0)
return tuple(result)
# Encoding is not specified explicitly, but "must be passed argv[0]" sounds like a simple conversion to raw bytes.
tklib.Tcl_FindExecutable(ToTCLString(sys.executable))