@picaso133

Как сделать Blink эффект python Tkinter?

Как сделать Blink эффект объекту "cont_text (tkinter.Message)"? Это поле должно мерцать постоянно
cont_text = tkinter.Message(root, text=mesaja, justify=CENTER, width=root.winfo_screenwidth(), bg="#e6e7e8",
                            font=("Arial Narrow", 80, "bold"), fg="#231f20")
  • Вопрос задан
  • 1032 просмотра
Пригласить эксперта
Ответы на вопрос 1
mysticmirage
@mysticmirage
import tkinter
from itertools import cycle


class BlinkMessage(tkinter.Message):
    def __init__(self, *args, **kwargs):
        self._ms = kwargs.pop('ms', 500)
        super().__init__(*args, **kwargs)
        self._blink_color = cycle([self['fg'], self['bg']])
        self._blink()

    def _blink(self):
        self['fg'] = next(self._blink_color)
        self.after(self._ms, self._blink)


А потом уже у себя вместо tkinter.Message использовать этот BlinkMessage:
cont_text = BlinkMessage(root, text=mesaja, justify=CENTER, width=root.winfo_screenwidth(), bg="#e6e7e8",
                         font=("Arial Narrow", 80, "bold"), fg="#231f20")


Плюс теперь есть опциональный параметр ms, который задаёт интервал смены цвета в миллисекундах:
cont_text = BlinkMessage(root, text=mesaja, justify=CENTER, width=root.winfo_screenwidth(), bg="#e6e7e8",
                         font=("Arial Narrow", 80, "bold"), fg="#231f20", ms=350)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы