Tkinter对话框

你好我的脚本在python中运行良好,但在我的程序中运行不好(SDS/2 wich是一个类似Autocad的软件).问题是,当读取第14行到第19行时,我遇到了一个错误.(源代码来自Tkinter.py)

选择 | 换行 | 行号
  1. class Tk(Misc, Wm):
  2.     """Toplevel widget of Tk which represents mostly the main window
  3.     of an appliation. It has an associated Tcl interpreter."""
  4.     _w = '.'
  5.     def __init__(self, screenName=None, baseName=None, className='Tk'):
  6.         """Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will
  7.         be created. BASENAME will be used for the identification of the profile file (see
  8.         readprofile).
  9.         It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
  10.         is the name of the widget class."""
  11.         global _default_root
  12.         self.master = None
  13.         self.children = {}
  14.         if baseName is None:
  15.             import sys, os
  16.             baseName = os.path.basename(sys.argv[0])
  17.             baseName, ext = os.path.splitext(baseName)
  18.             if ext not in ('.py', '.pyc', '.pyo'):
  19.                 baseName = baseName + ext
  20.         self.tk = _tkinter.create(screenName, baseName, className)
  21.         self.tk.wantobjects(wantobjects)
  22.         if _MacOS and hasattr(_MacOS, 'SchedParams'):
  23.             # Disable event scanning except for Command-Period
  24.             _MacOS.SchedParams(1, 0)
  25.             # Work around nasty MacTk bug
  26.             # XXX Is this one still needed?
  27.             self.update()
  28.         # Version sanity checks
  29.         tk_version = self.tk.getvar('tk_version')
  30.         if tk_version != _tkinter.TK_VERSION:
  31.             raise RuntimeError, \
  32.             "tk.h version (%s) doesn't match libtk.a version (%s)" \
  33.             % (_tkinter.TK_VERSION, tk_version)
  34.         # Under unknown circumstances, tcl_version gets coerced to float
  35.         tcl_version = str(self.tk.getvar('tcl_version'))
  36.         if tcl_version != _tkinter.TCL_VERSION:
  37.             raise RuntimeError, \
  38.             "tcl.h version (%s) doesn't match libtcl.a version (%s)" \
  39.             % (_tkinter.TCL_VERSION, tcl_version)
  40.         if TkVersion < 4.0:
  41.             raise RuntimeError, \
  42.             "Tk 4.0 or higher is required; found Tk %s" \
  43.             % str(TkVersion)
  44.         self.tk.createcommand('tkerror', _tkerror)
  45.         self.tk.createcommand('exit', _exit)
  46.         self.readprofile(baseName, className)
  47.         if _support_default_root and not _default_root:
  48.             _default_root = self
  49.         self.protocol("WM_DELETE_WINDOW", self.destroy)
  50.     def destroy(self):
  51.         """Destroy this and all descendants widgets. This will
  52.         end the application of this Tcl interpreter."""
  53.         for c in self.children.values(): c.destroy()
  54.         self.tk.call('destroy', self._w)
  55.         Misc.destroy(self)
  56.         global _default_root
  57.         if _support_default_root and _default_root is self:
  58.             _default_root = None
  59.     def readprofile(self, baseName, className):
  60.         """Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into
  61.         the Tcl Interpreter and calls execfile on BASENAME.py and CLASSNAME.py if
  62.         such a file exists in the home directory."""
  63.         import os
  64.         if os.environ.has_key('HOME'): home = os.environ['HOME']
  65.         else: home = os.curdir
  66.         class_tcl = os.path.join(home, '.%s.tcl' % className)
  67.         class_py = os.path.join(home, '.%s.py' % className)
  68.         base_tcl = os.path.join(home, '.%s.tcl' % baseName)
  69.         base_py = os.path.join(home, '.%s.py' % baseName)
  70.         dir = {'self': self}
  71.         exec 'from Tkinter import *' in dir
  72.         if os.path.isfile(class_tcl):
  73.             self.tk.call('source', class_tcl)
  74.         if os.path.isfile(class_py):
  75.             execfile(class_py, dir)
  76.         if os.path.isfile(base_tcl):
  77.             self.tk.call('source', base_tcl)
  78.         if os.path.isfile(base_py):
  79.             execfile(base_py, dir)
  80.     def report_callback_exception(self, exc, val, tb):
  81.         """Internal function. It reports exception on sys.stderr."""
  82.         import traceback, sys
  83.         sys.stderr.write("Exception in Tkinter callback\n")
  84.         sys.last_type = exc
  85.         sys.last_value = val
  86.         sys.last_traceback = tb
  87.         traceback.print_exception(exc, val, tb)
  88.  

因此,我希望能够在这些代码行中提供baseName变量,以覆盖下面的14到19行.

选择 | 换行 | 行号
  1. Tkinter(baseName = file_name_path).Label(text=" ").pack()
  2. Tkinter(baseName = file_name_path).Label(text="TEST Dialog Box").pack()
  3. Tkinter(baseName = file_name_path).Label(text=" ").pack()
  4. mainloop()
  5.  

有可能这样做吗?非常感谢.

标签: python

添加新评论