tkinter TclError: неизвестная опция для атрибутов виджета - PullRequest
0 голосов
/ 30 марта 2020

Это мое первое приложение на 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 Ответ

1 голос
/ 30 марта 2020

В Tk и, следовательно, в tkinter есть два Label виджета. Старая стандартная метка Tk поддерживает непосредственную настройку таких вещей, как цвета переднего плана и фона, в то время как более новая Ttk («Themed Tk») этого не делает (но вместо этого поддерживает тематику, , в частности, , она очень близко поддерживает следование собственной теме ОС) , Они оба сохраняются, потому что новый, безусловно, не является заменой старых, а некоторым приложениям (может быть, и вашим) нужна точная функциональность старых.

Если мы посмотрим на ваш след, мы видим это:

~\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 Label. Чтобы решить вашу непосредственную проблему, явно используйте старую.

# 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')

Другой альтернативой будет создание нового стиля, который вы можете применить к этому виджету, чтобы он выделялся так, как вы хотите ... но для простого одноразового лейбла это намного больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...