wxpython面板全屏?

时间:2016-12-05 12:27:30

标签: python wxpython wxwidgets

我试图让我的top_panel我的程序只进入全屏,我希望有一个按钮,这将做到这一点,我面临的问题是我不知道如何使面板进入全屏自我没有使用ShowFullscreen(true)强制整个帧进入全屏

我希望你能帮助我

class top_panel(wx.Panel):

def __init__(self, parent):
    wx.Panel.__init__(self, parent=parent, size=(400,175))
    self.SetBackgroundColour('BLACK')
    self.ofullscreen = wx.Button(self, -1, "Fullscreen", (10,30))
    self.ofullscreen.Bind(wx.EVT_BUTTON, self.onfullscreen, self.ofullscreen)
    self.gbs = wx.GridBagSizer(2,2)
    self.Bind(wx.EVT_KEY_DOWN, self.onKey)
    wx.Frame.ShowFullScreen(True)
#----------------------------------------------------------------------
def onKey(self, event):
    """
    Check for ESC key press and exit is ESC is pressed
    """
    key_code = event.GetKeyCode()
    if key_code == wx.WXK_ESCAPE:
        self.GetParent().Close()
    else:
        event.Skip()   

def onfullscreen(self):
    print "hola"
    #self.fullscreen?????

3 个答案:

答案 0 :(得分:1)

我在博客上写过这个主题。这是一个例子:

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

我注意到这段代码似乎与Mac不兼容。

答案 1 :(得分:0)

您无法全屏显示子窗口,例如面板。只有顶级框架可以全屏显示,但当然,这根本不应该是一个问题,因为绝对没有什么可以阻止你创建一个只包含面板的框架然后显示这个框架全屏完全等同于显示面板全屏。

答案 2 :(得分:0)

使用Mike Driscoll的示例代码,当使用多个面板时,有一种方法可以为面板伪装全屏。目前这有点像黑客,但它应该给你它的要点 使用SetMinSizeSendSizeEvent 单击彩色面板进行对焦,然后按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()

注意:对于您的情况,您可能不希望真正进入全屏,因为您可能仍需要访问某些控制按钮,因此只需从全屏尺寸中扣除所需的金额。