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().

Също така имайте предвид, че не трябва да спите в основната GUI нишка. Ще окачите потребителския интерфейс. Използването на 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