_tkinter.TclError: 无效命令名 "labelframe
我在运行我写的一个 python/tkinter
图形界面应用时遇到了以下错误。
我以为可能是 Tcl/Tk 的版本问题,但 LabelFrame()
这个命令是在 Tcl/Tk 8.4 版本中添加的,而我正好使用的就是这个版本。
我尝试在另一台电脑上运行这个程序,那台电脑可以正常运行我写的另一个 python/tkinter
应用——这两个应用的区别在于,一个使用了 LabelFrame()
组件,而另一个没有。
Traceback (most recent call last):
File "/home/nharris/python/isub_parser/isub.py", line 672, in <module>
timeFrame = LabelFrame(optFrame, text="Time Scale Options")
File "/usr/apps/Python/python2.6.1-rhel3-i686/lib/python2.6/lib-tk/Tkinter.py", line 3525, in __init__
Widget.__init__(self, master, 'labelframe', cnf, kw)
File "/usr/apps/Python/python2.6.1-rhel3-i686/lib/python2.6/lib-tk/Tkinter.py", line 1932, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: invalid command name "labelframe"
2 个回答
1
使用这两种方法,有可能会看到两个不同版本的Tcl/Tk。
Method 1:
>tclsh
%info patchlevel
8.4.15
Method 2:
>python
>>>import Tkinter;print Tkinter.TkVersion
8.3
Key:
> default command line
>>> python command line
% tcl command line
更新一下Tcl/Tk应该能解决这个问题。
2
Python可能会使用自己特别的TCL/TK版本,这取决于它是怎么被构建和安装的。通常在Windows上是这样,有时候在Linux上也是这样,而在MacOS X上则很少见。要知道Python使用的是什么版本,你得查看Python内部报告的版本。
如果Python没有使用你安装的版本(就像你现在遇到的情况),你可以尝试更新Python。如果在你的Linux系统上,无法通过现有的软件包解决Python的构建方式问题,你就需要从源代码重新构建Python,以便使用更新的TCL/TK版本或者使用你已经安装的版本。