Я пытался изучить Tkinter, а затем ttk создать графический интерфейс. При работе с ttk я заметил, что происходит что-то странное. Когда я задавал любой цвет в формате ARGB, например '#80FFFFFF'
, ошибки не было, а конкретный виджет просто превращался в маленький квадратик. Почему это происходит?
Вот пример,
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
s = ttk.Style()
s.configure('b1.TButton', background='#FF0000')
s.configure('b2.TButton', background='#80FFFFFF')
b1 = ttk.Button(root, style='b1.TButton')
b2 = ttk.Button(root, style='b2.TButton')
b1.grid()
b2.grid()
root.mainloop()
Это результат этого кода:
Кнопки Tkinter не поддерживают прозрачность, поэтому я думаю, что причиной проблемы является дополнительный FF
в вашем коде ARGB, который сообщает цвету прозрачность.
Мое предположение из моего исследования состоит в том, что кнопка не может правильно отформатироваться из-за цветового кода прозрачности и, таким образом, вызывает эту проблему при отображении кнопки.
Вы можете проверить это, добавив FF к любому цвету ARGB, и увидите тот же эффект.
Да, но tkinter просто выдает ошибку, когда вы указываете строку цвета 8. Разве ttk не должен делать то же самое?
@PrateekDhanuka не обязательно. TTK — это набор виджетов, похожих на виджеты tk, но предназначенных для поддержки стилей. Они не являются точной копией виджетов tk, поэтому они могут решать проблемы иначе, чем виджеты tk.
После некоторого тестирования и чтения я решил, что это из-за дополнительного
FF
, который говорит ARGB быть прозрачным. Видя, что Tkinter и прозрачность являются сложной, если не невозможной концепцией в tkinter, это может привести к тому, что кнопка будет действовать таким образом, потому что он не знает, как отображать кнопку с прозрачностью.