wxPython: выйти из полноэкранного режима

Чтобы отобразить окно wxPython в полноэкранном режиме, вы используете:

ShowFullScreen(True)

А как выйти из полноэкранного режима? Я пробовал очевидный способ:

ShowFullScreen(True)
sleep(5)
ShowFullScreen(False)

Однако это не работает. Когда я запускаю скрипт, ничего не появляется. Через 5 секунд в левом верхнем углу экрана появляется окно размером примерно 200x250, внутри которого ничего нет. Кажется, что у него тоже нет границ.

Если я изменю это на

showFullScreen(True)

затем я застреваю в полноэкранном окне, из которого мне нужно использовать Alt + F2 -> xkill, чтобы выйти.


person Brewer    schedule 04.07.2011    source источник


Ответы (2)


Похоже, вам нужно сначала Show() окно. (Согласно документации, вам не нужно этого делать. Возможно, это ошибка.) Я тестировал на Mac OS X и Windows - они обе проявляют проблемы, если вы сначала не вызываете Show().

Также обратите внимание, что вы не должны спать в основном потоке графического интерфейса. Вы повесите пользовательский интерфейс. Использование CallLater является одним из возможных решений, как показано в моем примере.

Рабочий пример:

import wx

def main():
    app = wx.PySimpleApp()
    frame = wx.Frame(None, -1, 'Full Screen Test')
    frame.Show()
    frame.ShowFullScreen(True)
    wx.CallLater(5000, frame.ShowFullScreen, False)
    app.MainLoop()

if __name__ == '__main__':
    main()
person FogleBird    schedule 04.07.2011

Документация для ShowFullScreen гласит:
ShowFullScreen(show, style=wx.FULLSCREEN_ALL)

Depending on the value of show parameter the window is either shown full screen or restored to its normal state.

Parameters:

    show (bool)
    style (long): is a bit list containing some or all of the following values, which indicate what elements of the window to hide in full-screen mode:
        wx.FULLSCREEN_NOMENUBAR
        wx.FULLSCREEN_NOTOOLBAR
        wx.FULLSCREEN_NOSTATUSBAR
        wx.FULLSCREEN_NOBORDER
        wx.FULLSCREEN_NOCAPTION
        wx.FULLSCREEN_ALL (all of the above)

Поэтому поместите событие/события полноэкранного переключения в меню и запустите полноэкранный режим с помощью:
self.window.ShowFullScreen(True, style=(wx.FULLSCREEN_NOTOOLBAR | wx.FULLSCREEN_NOSTATUSBAR |wx.FULLSCREEN_NOBORDER |wx.FULLSCREEN_NOCAPTION))

Обратите внимание, что я пропустил wx.FULLSCREEN_NOMENUBAR, таким образом вы все равно сможете получить доступ к меню, чтобы снова отключить полноэкранный режим.

person Rolf of Saxony    schedule 21.07.2015