Иногда вам нужно создать приложение, которое будет разворачиваться на весь экран сразу после запуска. В данной статье я расскажу вам как реализовать эту возможность, а также как сделать ваше приложение полноэкранным. Таким образом ваш конечный пользователь будет видеть только само приложение, без дополнительных строк или рамок (например, панели задач).
Разворачиваем рамку на весь экран
Как я уже отметил во вступлении, может случится так, что ваше wxPython приложение должно будет развернуться на весь экран сразу же во время первой загрузки. Или же, вы захотите максимизировать саб-фрейм. Это довольно просто сделать, используя wxPython. Однако, здесь есть один весьма интересный момент, который достоин подробного рассмотрения. Давайте сначала взглянем на код целиком, а уже потом обсудим тот фрагмент.
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 |
import wx class MyPanel(wx.Panel): """""" def __init__(self, parent): """""" wx.Panel.__init__(self, parent) class MyFrame(wx.Frame): """""" def __init__(self): """""" wx.Frame.__init__(self, None, title="Test Maximize") panel = MyPanel(self) self.Show() self.Maximize(True) if __name__ == "__main__": app = wx.App(False) frame = MyFrame() app.MainLoop() |
У нас довольно стандартный set up, в котором используются два класса, один является подклассом wx.Panel, а второй – подклассом wx.Frame. Чтобы привести его к Maximize, мы просто вызываем метод фрейма, который называется Maximize().
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
А вот теперь и наступает момент, о котором мы говорили выше. Если вы вызываете Maximize() до того, как вызвали Show(), вам может выбить сообщение о сбое. Например, когда я в первый раз вызывал Maximize на Windows 7, рамка не растягивалась так, чтобы покрывать всю панель корректно. Вы можете увидеть это на скриншоте ниже.
Как вы видите, рамка отображается только справа и снизу. Я говорю о фрагментах, которые закрашены тёмно-серым. Но, если вы запустите код, пример которого я предоставлял выше, то всё будет покрыто так, как должно, а это значит – весьма стандартно. Пожалуй, это единственна проблема на Windows, которая вызывает у меня реальные опасения. На Mac OS X El Capitan всё работает отлично.
Также бывают случаи, когда вам нужно вызвать метод фрейма под названием Raise(), чтобы ваше приложение отображалось поверх остальных, или же, чтобы хотя бы заставить значок в панели задач мерцать, привлекая внимание пользователя.
Делаем ваше приложение полноэкранным
Лично я не нашёл много способов применения для запуска полноэкранного режима (читай: растягивания приложения на весь экран), за исключением скринсейвера или же приложения для просмотра изображений. Но, как бы то ни было, вот вам довольно простой вариант реализации данной возможности:
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 36 37 |
import wx class MyPanel(wx.Panel): """""" def __init__(self, parent): """Constructor""" wx.Panel.__init__(self, parent) self.Bind(wx.EVT_KEY_DOWN, self.onKey) def onKey(self, event): """ Проверьте, нажата ли клавиша «Esc» и, выходите, если она нажата. """ key_code = event.GetKeyCode() if key_code == wx.WXK_ESCAPE: self.GetParent().Close() else: event.Skip() class MyFrame(wx.Frame): """""" def __init__(self): """Constructor""" wx.Frame.__init__(self, None, title="Test FullScreen") panel = MyPanel(self) self.ShowFullScreen(True) if __name__ == "__main__": app = wx.App(False) frame = MyFrame() app.MainLoop() |
Учтите, что, когда приложение развёрнуто во весь экран, вы лишаете пользователя удобного способа выхода из него, так как нет панели заголовка. Поэтому, я решил сделать так, чтобы пользователь мог выйти из приложения использую клавишу Escape.
Примечание: этот пример может не работать на некоторых платформах.
Итоги:
К этому момент вы уже должны были ознакомиться с тем, как развернуть приложение на весь экран или же сделать его полноэкранным сразу после запуска. Лично я чаще замечал подобную возможность в приложениях для Mac, так что думаю, что статья больше пригодится тем, кто пишет для данной ОС.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»