Microsoft Outlook и ряд других программ имеют аккуратный небольшой визуальный прием, суть которого состоит в том, что отображается статусный диалог, который медленно появляется, застывает, а потом медленно затухает и исчезает. Набор инструментов wxPython позволяет быстро и просто реализовать данную возможность в вашем приложении, изменяя альфа-прозрачность любого виджета топ-уровня. Все виджеты, которые будут подчинены ему также унаследуют такую прозрачность, так что пропадать и появляется будет не только фон вашего приложения.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
В данном примере я буду использовать объект рамки как объект топ-уровня, а также таймер, который будет менять альфа-прозрачность в течении 5 секунд. Хэндлер событий рамки заставит её содержимое затухать, исчезнуть и появится снова. Диапазон значений колеблется от 0 до 255, где 0 – полностью прозрачный, а 255 – полностью непрозрачный.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import wx class Fader(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, title='Fader Example') self.amount = 5 self.delta = 5 panel = wx.Panel(self, wx.ID_ANY) self.SetTransparent(self.amount) # Fader Timer self.timer = wx.Timer(self, wx.ID_ANY) self.timer.Start(60) self.Bind(wx.EVT_TIMER, self.AlphaCycle) def AlphaCycle(self, evt): """ Рамка затухает и снова появляется """ self.amount += self.delta if self.amount >= 255: self.delta = -self.delta self.amount = 255 if self.amount <= 0: self.amount = 0 self.delta = 5 self.SetTransparent(self.amount) if __name__ == '__main__': app = wx.App(False) frm = Fader() frm.Show() app.MainLoop() |
Как вы видите, всё, что нужно сделать для изменения прозрачности виджета топ-уровня, это вызвать метод SetTransparent() и задать в нём необходимые значения. Я сам использовал этот метод в некоторых моих прошлых приложениях, когда мне нужно было установить затухающее оповещение – например, вывести окно, сообщающее о новом письме, которое пропадало через несколько секунд.
Итоги
Если вы ещё не используете рекомендации из этой статьи в своих приложениях, применяйте его всегда, когда нужно будет отображать конечному пользователю поп-ап сообщение. В wx.lib.agw также имеется виджет ToasterBox. Это обычный виджет, который был полностью написан на Python, в котором есть масса удобных встроенных возможностей, благодаря которым вам не придётся придумывать то, что сделал я. Вам следует его заценить!
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»