_tkinter.TclError:无效的命令名称错误

时间:2018-01-19 07:56:48

标签: python tkinter ttk

所以我正在使用python shell跟踪tkinter上的t教程。所有导入都有效,但在ttk.Button对象上尝试一些方法和属性会产生上述错误,即使它与教程中的完全相同。即:

该按钮具有变量'按钮'。检查按钮的文字'属性使用button['text']抛出错误并通过button.config(text = 'text')设置按钮的文本属性也会引发错误,就像检查根窗口上的config()一样。导入的初始代码以第一个错误产生线结束,为:

>>> from tkinter import *
>>> from tkinter import ttk
>>> root = Tk()
>>> button = ttk.Button(root, text = 'Button')
>>> button.pack()
>>> button['text']

基本上设置或获取按钮或其他ttk对象的text属性会引发错误。

这里有错误的一行:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    button['text']
  File "C:\Users\USER\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1483, in cget
    return self.tk.call(self._w, 'cget', '-' + key)
_tkinter.TclError: invalid command name ".!button"

实际上,根据使用python 3的教程,Button确实有一个属性文本。

编辑。我将错误消息与相关的消息交换,

1 个答案:

答案 0 :(得分:1)

这是因为小部件没有变量&#34; text&#34;。相反,窗口小部件的选项存储在字典中。

当您使用button["text"]时,您正在访问该项目&#34; text&#34;在字典中,所以它返回&#34; text&#34;的值。键。您也可以使用cget方法获取选项。

最好从configure方法访问此值词典。使用没有参数的所述方法将返回小部件的所有选项的字典。