tkinter TclError: unknown option on widget attributes

tkinter TclError: unknown option on widget attributes

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

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"

如果有人能帮助我理解和解决这个问题,那就太好了。提前致谢!

Tk 中有 两个 Label 小部件,因此在 tkinter 中。较旧的标准 Tk 标签支持直接设置前景和背景颜色等内容,而较新的 Ttk(“Themed Tk”)不支持(而是支持主题化,特别是 它支持遵循 OS 原生主题非常接近)。它们都被保留了下来,因为新的绝对不是旧的直接替代品,而且一些应用程序(可能包括你的应用程序)需要旧的完全相同的功能。

如果我们查看您的回溯,我们会看到:

~\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 标签。要解决您眼前的问题,明确 使用旧问题。

# Note: tk.Label and not just Label or ttk.Label
label_0 = tk.Label(root, text="Update System", 
                   width=25, font=("bold", 25), height=2, bg='brown', fg='white')

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