ARGB в tkinter ttk ведет себя неожиданно

Я пытался изучить 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()

Это результат этого кода: ARGB в tkinter ttk ведет себя неожиданно

После некоторого тестирования и чтения я решил, что это из-за дополнительного FF, который говорит ARGB быть прозрачным. Видя, что Tkinter и прозрачность являются сложной, если не невозможной концепцией в tkinter, это может привести к тому, что кнопка будет действовать таким образом, потому что он не знает, как отображать кнопку с прозрачностью.

Mike - SMT 30.05.2019 14:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кнопки Tkinter не поддерживают прозрачность, поэтому я думаю, что причиной проблемы является дополнительный FF в вашем коде ARGB, который сообщает цвету прозрачность.

Мое предположение из моего исследования состоит в том, что кнопка не может правильно отформатироваться из-за цветового кода прозрачности и, таким образом, вызывает эту проблему при отображении кнопки.

Вы можете проверить это, добавив FF к любому цвету ARGB, и увидите тот же эффект.

Да, но tkinter просто выдает ошибку, когда вы указываете строку цвета 8. Разве ttk не должен делать то же самое?

Prateek Dhanuka 30.05.2019 14:58

@PrateekDhanuka не обязательно. TTK — это набор виджетов, похожих на виджеты tk, но предназначенных для поддержки стилей. Они не являются точной копией виджетов tk, поэтому они могут решать проблемы иначе, чем виджеты tk.

Mike - SMT 30.05.2019 15:39

Другие вопросы по теме