使用Mike Driscoll的示例代码,当使用多个面板时,有一种伪造面板全屏的方法。目前这有点破绽,但它应该给你它的要点。使用SetMinSize和SendSizeEvent。
单击彩色面板进行对焦,然后按F1,F2或F3切换面板进出“全屏”或恢复到相同尺寸。
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):
"""
Check for ESC key press and exit is ESC is pressed
F1 panel 1 is full screen
F2 panel 2 is full screen
F3 panels revert to equal sizes
"""
key_code = event.GetKeyCode()
parent = self.GetParent()
width, height = wx.GetDisplaySize()
if key_code == wx.WXK_ESCAPE:
self.GetParent().Close()
elif key_code == wx.WXK_F1:
parent.panel1.SetMinSize((1,1))
parent.panel2.SetMinSize((width,height))
parent.SendSizeEvent()
parent.Layout()
parent.Fit()
elif key_code == wx.WXK_F2:
parent.panel2.SetMinSize((1,1))
parent.panel1.SetMinSize((width,height))
parent.SendSizeEvent()
parent.Layout()
parent.Fit()
elif key_code == wx.WXK_F3:
parent.panel2.SetMinSize((120,70))
parent.panel1.SetMinSize((120,70))
parent.SendSizeEvent()
parent.Layout()
parent.Fit()
else:
event.Skip()
class MyFrame(wx.Frame):
""""""
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Test FullScreen")
self.panel1 = MyPanel(self)
self.panel2 = MyPanel(self)
self.panel1.SetBackgroundColour(wx.GREEN)
self.panel2.SetBackgroundColour(wx.BLUE)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(self.panel1)
vbox.Add(self.panel2)
self.SetSizer(vbox)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
注意:你的情况,你会不会想真正进入全屏模式,因为你可能需要仍然可以访问一些控制按钮,所以只是扣除您从全屏幕大小所需要的量。