_tkinter.TclError: 无效命令名 "labelframe

2 投票
2 回答
2914 浏览
提问于 2025-04-16 07:28

我在运行我写的一个 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版本或者使用你已经安装的版本。

撰写回答