⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkinter.py

📁 minimal python variant for small footprint apps like embedded apps
💻 PY
📖 第 1 页 / 共 5 页
字号:
# Tkinter.py -- Tk/Tcl widget wrappers__version__ = "$Revision: 1.1.1.1 $"import sysif sys.platform == "win32":	import FixTk # Attempt to configure Tcl/Tk without requiring PATHimport _tkinter # If this fails your Python may not be configured for Tktkinter = _tkinter # b/w compat for exportTclError = _tkinter.TclErrorfrom types import *from Tkconstants import *import string; _string = string; del stringtry:	import MacOS; _MacOS = MacOS; del MacOSexcept ImportError:	_MacOS = NoneTkVersion = _string.atof(_tkinter.TK_VERSION)TclVersion = _string.atof(_tkinter.TCL_VERSION)READABLE = _tkinter.READABLEWRITABLE = _tkinter.WRITABLEEXCEPTION = _tkinter.EXCEPTION# These are not always defined, e.g. not on Win32 with Tk 8.0 :-(try: _tkinter.createfilehandlerexcept AttributeError: _tkinter.createfilehandler = Nonetry: _tkinter.deletefilehandlerexcept AttributeError: _tkinter.deletefilehandler = None        def _flatten(tuple):	res = ()	for item in tuple:		if type(item) in (TupleType, ListType):			res = res + _flatten(item)		elif item is not None:			res = res + (item,)	return resdef _cnfmerge(cnfs):	if type(cnfs) is DictionaryType:		return cnfs	elif type(cnfs) in (NoneType, StringType):		return cnfs	else:		cnf = {}		for c in _flatten(cnfs):			try:				cnf.update(c)			except (AttributeError, TypeError), msg:				print "_cnfmerge: fallback due to:", msg				for k, v in c.items():					cnf[k] = v		return cnfclass Event:	pass_support_default_root = 1_default_root = Nonedef NoDefaultRoot():	global _support_default_root	_support_default_root = 0	global _default_root	_default_root = None	del _default_rootdef _tkerror(err):	passdef _exit(code='0'):	raise SystemExit, code_varnum = 0class Variable:	_default = ""	def __init__(self, master=None):		global _varnum		if not master:			master = _default_root		self._master = master		self._tk = master.tk		self._name = 'PY_VAR' + `_varnum`		_varnum = _varnum + 1		self.set(self._default)	def __del__(self):		self._tk.globalunsetvar(self._name)	def __str__(self):		return self._name	def set(self, value):		return self._tk.globalsetvar(self._name, value)	def trace_variable(self, mode, callback):		cbname = self._master._register(callback)		self._tk.call("trace", "variable", self._name, mode, cbname)		return cbname	trace = trace_variable	def trace_vdelete(self, mode, cbname):		self._tk.call("trace", "vdelete", self._name, mode, cbname)		self._master.deletecommand(cbname)	def trace_vinfo(self):		return map(self._tk.split, self._tk.splitlist(			self._tk.call("trace", "vinfo", self._name)))class StringVar(Variable):	_default = ""	def __init__(self, master=None):		Variable.__init__(self, master)	def get(self):		return self._tk.globalgetvar(self._name)class IntVar(Variable):	_default = 0	def __init__(self, master=None):		Variable.__init__(self, master)	def get(self):		return getint(self._tk.globalgetvar(self._name))class DoubleVar(Variable):	_default = 0.0	def __init__(self, master=None):		Variable.__init__(self, master)	def get(self):		return getdouble(self._tk.globalgetvar(self._name))class BooleanVar(Variable):	_default = "false"	def __init__(self, master=None):		Variable.__init__(self, master)	def get(self):		return self._tk.getboolean(self._tk.globalgetvar(self._name))def mainloop(n=0):	_default_root.tk.mainloop(n)getint = intgetdouble = floatdef getboolean(s):	return _default_root.tk.getboolean(s)# Methods defined on both toplevel and interior widgetsclass Misc:	# XXX font command?	_tclCommands = None	def destroy(self):		if self._tclCommands is not None:			for name in self._tclCommands:				#print '- Tkinter: deleted command', name				self.tk.deletecommand(name)			self._tclCommands = None	def deletecommand(self, name):		#print '- Tkinter: deleted command', name		self.tk.deletecommand(name)		try:			self._tclCommands.remove(name)		except ValueError:			pass	def tk_strictMotif(self, boolean=None):		return self.tk.getboolean(self.tk.call(			'set', 'tk_strictMotif', boolean))	def tk_bisque(self):		self.tk.call('tk_bisque')	def tk_setPalette(self, *args, **kw):		self.tk.call(('tk_setPalette',)		      + _flatten(args) + _flatten(kw.items()))	def tk_menuBar(self, *args):		pass # obsolete since Tk 4.0	def wait_variable(self, name='PY_VAR'):		self.tk.call('tkwait', 'variable', name)	waitvar = wait_variable # XXX b/w compat	def wait_window(self, window=None):		if window == None:			window = self		self.tk.call('tkwait', 'window', window._w)	def wait_visibility(self, window=None):		if window == None:			window = self		self.tk.call('tkwait', 'visibility', window._w)	def setvar(self, name='PY_VAR', value='1'):		self.tk.setvar(name, value)	def getvar(self, name='PY_VAR'):		return self.tk.getvar(name)	getint = int	getdouble = float	def getboolean(self, s):		return self.tk.getboolean(s)	def focus_set(self):		self.tk.call('focus', self._w)	focus = focus_set # XXX b/w compat?	def focus_force(self):		self.tk.call('focus', '-force', self._w)	def focus_get(self):		name = self.tk.call('focus')		if name == 'none' or not name: return None		return self._nametowidget(name)	def focus_displayof(self):		name = self.tk.call('focus', '-displayof', self._w)		if name == 'none' or not name: return None		return self._nametowidget(name)	def focus_lastfor(self):		name = self.tk.call('focus', '-lastfor', self._w)		if name == 'none' or not name: return None		return self._nametowidget(name)	def tk_focusFollowsMouse(self):		self.tk.call('tk_focusFollowsMouse')	def tk_focusNext(self):		name = self.tk.call('tk_focusNext', self._w)		if not name: return None		return self._nametowidget(name)	def tk_focusPrev(self):		name = self.tk.call('tk_focusPrev', self._w)		if not name: return None		return self._nametowidget(name)	def after(self, ms, func=None, *args):		if not func:			# I'd rather use time.sleep(ms*0.001)			self.tk.call('after', ms)		else:			# XXX Disgusting hack to clean up after calling func			tmp = []			def callit(func=func, args=args, self=self, tmp=tmp):				try:					apply(func, args)				finally:					try:						self.deletecommand(tmp[0])					except TclError:						pass			name = self._register(callit)			tmp.append(name)			return self.tk.call('after', ms, name)	def after_idle(self, func, *args):		return apply(self.after, ('idle', func) + args)	def after_cancel(self, id):		self.tk.call('after', 'cancel', id)	def bell(self, displayof=0):		self.tk.call(('bell',) + self._displayof(displayof))	# Clipboard handling:	def clipboard_clear(self, **kw):		if not kw.has_key('displayof'): kw['displayof'] = self._w		self.tk.call(('clipboard', 'clear') + self._options(kw))	def clipboard_append(self, string, **kw):		if not kw.has_key('displayof'): kw['displayof'] = self._w		self.tk.call(('clipboard', 'append') + self._options(kw)		      + ('--', string))	# XXX grab current w/o window argument	def grab_current(self):		name = self.tk.call('grab', 'current', self._w)		if not name: return None		return self._nametowidget(name)	def grab_release(self):		self.tk.call('grab', 'release', self._w)	def grab_set(self):		self.tk.call('grab', 'set', self._w)	def grab_set_global(self):		self.tk.call('grab', 'set', '-global', self._w)	def grab_status(self):		status = self.tk.call('grab', 'status', self._w)		if status == 'none': status = None		return status	def lower(self, belowThis=None):		self.tk.call('lower', self._w, belowThis)	def option_add(self, pattern, value, priority = None):		self.tk.call('option', 'add', pattern, value, priority)	def option_clear(self):		self.tk.call('option', 'clear')	def option_get(self, name, className):		return self.tk.call('option', 'get', self._w, name, className)	def option_readfile(self, fileName, priority = None):		self.tk.call('option', 'readfile', fileName, priority)	def selection_clear(self, **kw):		if not kw.has_key('displayof'): kw['displayof'] = self._w		self.tk.call(('selection', 'clear') + self._options(kw))	def selection_get(self, **kw):		if not kw.has_key('displayof'): kw['displayof'] = self._w		return self.tk.call(('selection', 'get') + self._options(kw))	def selection_handle(self, command, **kw):		name = self._register(command)		self.tk.call(('selection', 'handle') + self._options(kw)		      + (self._w, name))	def selection_own(self, **kw):		"Become owner of X selection."		self.tk.call(('selection', 'own') +			     self._options(kw) + (self._w,))	def selection_own_get(self, **kw):		"Find owner of X selection."		if not kw.has_key('displayof'): kw['displayof'] = self._w		name = self.tk.call(('selection', 'own') + self._options(kw))		if not name: return None		return self._nametowidget(name)	def send(self, interp, cmd, *args):		return self.tk.call(('send', interp, cmd) + args)	def lower(self, belowThis=None):		self.tk.call('lower', self._w, belowThis)	def tkraise(self, aboveThis=None):		self.tk.call('raise', self._w, aboveThis)	lift = tkraise	def colormodel(self, value=None):		return self.tk.call('tk', 'colormodel', self._w, value)	def winfo_atom(self, name, displayof=0):		args = ('winfo', 'atom') + self._displayof(displayof) + (name,)		return getint(self.tk.call(args))	def winfo_atomname(self, id, displayof=0):		args = ('winfo', 'atomname') \		       + self._displayof(displayof) + (id,)		return self.tk.call(args)	def winfo_cells(self):		return getint(			self.tk.call('winfo', 'cells', self._w))	def winfo_children(self):		return map(self._nametowidget,			   self.tk.splitlist(self.tk.call(				   'winfo', 'children', self._w)))	def winfo_class(self):		return self.tk.call('winfo', 'class', self._w)	def winfo_colormapfull(self):		return self.tk.getboolean(			self.tk.call('winfo', 'colormapfull', self._w))	def winfo_containing(self, rootX, rootY, displayof=0):		args = ('winfo', 'containing') \		       + self._displayof(displayof) + (rootX, rootY)		name = self.tk.call(args)		if not name: return None		return self._nametowidget(name)	def winfo_depth(self):		return getint(self.tk.call('winfo', 'depth', self._w))	def winfo_exists(self):		return getint(			self.tk.call('winfo', 'exists', self._w))	def winfo_fpixels(self, number):		return getdouble(self.tk.call(			'winfo', 'fpixels', self._w, number))	def winfo_geometry(self):		return self.tk.call('winfo', 'geometry', self._w)	def winfo_height(self):		return getint(			self.tk.call('winfo', 'height', self._w))	def winfo_id(self):		return self.tk.getint(			self.tk.call('winfo', 'id', self._w))	def winfo_interps(self, displayof=0):		args = ('winfo', 'interps') + self._displayof(displayof)		return self.tk.splitlist(self.tk.call(args))	def winfo_ismapped(self):		return getint(			self.tk.call('winfo', 'ismapped', self._w))	def winfo_manager(self):		return self.tk.call('winfo', 'manager', self._w)	def winfo_name(self):		return self.tk.call('winfo', 'name', self._w)	def winfo_parent(self):		return self.tk.call('winfo', 'parent', self._w)	def winfo_pathname(self, id, displayof=0):		args = ('winfo', 'pathname') \		       + self._displayof(displayof) + (id,)		return self.tk.call(args)	def winfo_pixels(self, number):		return getint(			self.tk.call('winfo', 'pixels', self._w, number))	def winfo_pointerx(self):		return getint(			self.tk.call('winfo', 'pointerx', self._w))	def winfo_pointerxy(self):		return self._getints(			self.tk.call('winfo', 'pointerxy', self._w))	def winfo_pointery(self):		return getint(			self.tk.call('winfo', 'pointery', self._w))	def winfo_reqheight(self):		return getint(			self.tk.call('winfo', 'reqheight', self._w))	def winfo_reqwidth(self):		return getint(			self.tk.call('winfo', 'reqwidth', self._w))	def winfo_rgb(self, color):		return self._getints(			self.tk.call('winfo', 'rgb', self._w, color))	def winfo_rootx(self):		return getint(			self.tk.call('winfo', 'rootx', self._w))	def winfo_rooty(self):		return getint(			self.tk.call('winfo', 'rooty', self._w))	def winfo_screen(self):		return self.tk.call('winfo', 'screen', self._w)	def winfo_screencells(self):		return getint(			self.tk.call('winfo', 'screencells', self._w))	def winfo_screendepth(self):		return getint(			self.tk.call('winfo', 'screendepth', self._w))	def winfo_screenheight(self):

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -