开发者

wxPython: Exit Fullscreen

To display a wxPython window in full screen mode you use:

ShowFullScreen(True)

How do you get out of full screen though? I've tried the obvious way:

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

This doesn't work though. When I run the script, nothing appears. After 5 seconds a window roughly 200x250 appears in the top-left corner of the screen, without anything inside of it. It doesn't appear to have any borders either.

If I change this to

showFullScreen(True)

then I get stuck with a full screen window that I have to use Alt + F2开发者_如何学Go -> xkill to get out of.


It looks like you need to Show() the window first. (According to the documentation, you shouldn't have to. Maybe this is a bug.) I tested on Mac OS X and Windows - they both exhibit issues if you don't call Show() first.

Also note that you shouldn't sleep in the main GUI thread. You'll hang the UI. Using CallLater is one potential solution, as shown in my example.

Working example:

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


The documentation for ShowFullScreen reads:
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)

So put your Full Screen toggle event/s in a Menu and start full screen mode with:
self.window.ShowFullScreen(True, style=(wx.FULLSCREEN_NOTOOLBAR | wx.FULLSCREEN_NOSTATUSBAR |wx.FULLSCREEN_NOBORDER |wx.FULLSCREEN_NOCAPTION))

Note that I omitted wx.FULLSCREEN_NOMENUBAR, in this way you will still be able to access the menu to turn full screen mode off again.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜