tkinter TclError:小部件属性上的未知选项

时间:2020-03-30 10:23:08

标签: python-3.x tkinter tcl

这是我在Tkinter上的第一个应用程序,我试图从下拉菜单中的选定文件按钮中获取输入,并触发单击提交按钮时要执行的功能。实现了此目标,但是按要求设计按钮和标签失败。

root = tk.Tk()
root.geometry('1200x800')
root.title("Update System")

label_0 = Label(root, text="Update System",width=25,font=("bold", 25),height=2,bg='brown',fg='white')
label_0.place(x=170,y=30)

root.mainloop()

我收到错误TclError: unknown option "-fg" (for bg-background, height attributes of buttons and labels).,完整的追溯如下所示:

---------------------------------------------------------------------------
TclError                                  Traceback (most recent call last)
<ipython-input-15-2c166bb79a75> in <module>
      3 root.title("Update System")
      4 
----> 5 label_0 = Label(root, text="Update System",width=25,font=("bold", 25),height=2,bg='brown',fg='white')
      6 label_0.place(x=170,y=30)
      7 

~\Anaconda3\lib\tkinter\ttk.py in __init__(self, master, **kw)
    759             relief, text, wraplength
    760         """
--> 761         Widget.__init__(self, master, "ttk::label", kw)
    762 
    763 

~\Anaconda3\lib\tkinter\ttk.py in __init__(self, master, widgetname, kw)
    557             # Load tile now, if needed
    558             _load_tile(master)
--> 559         tkinter.Widget.__init__(self, master, widgetname, kw=kw)
    560 
    561 

~\Anaconda3\lib\tkinter\__init__.py in __init__(self, master, widgetName, cnf, kw, extra)
   2297             del cnf[k]
   2298         self.tk.call(
-> 2299             (widgetName, self._w) + extra + self._options(cnf))
   2300         for k, v in classes:
   2301             k.configure(self, v)

TclError: unknown option "-height"

如果有人可以帮助我理解并弄清这个问题,那就太好了。预先感谢!

1 个答案:

答案 0 :(得分:1)

在Tk中因此有teminter中有两个 foreignObject小部件。较旧的标准Tk标签支持直接设置前景色和背景色,而较新的Ttk(“主题Tk”)不支持(而是支持主题化,具体它非常紧密地遵循OS本机主题) )。之所以保留它们,是因为新的应用程序绝对不能替代旧的应用程序,并且某些应用程序(也许包括您的应用程序)需要旧应用程序的确切功能。

如果我们查看您的回溯,则会看到以下内容:

Label

看到那里的~\Anaconda3\lib\tkinter\ttk.py in __init__(self, master, **kw) 759 relief, text, wraplength 760 """ --> 761 Widget.__init__(self, master, "ttk::label", kw) 762 763 (两次!)?这表示您正在使用Ttk标签。要解决您眼前的问题,请明确地使用旧的问题。

ttk

另一种选择是创建一种新样式,您可以将其应用于该小部件以使其以您想要的方式突出显示……但是对于简单的一次性标签,这需要做很多工作。