繁体   English   中英

wxpython面板全屏显示?

[英]wxpython panel fullscreen?

我正在尝试使我的程序的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?????

我已经在我的博客上写过关于这个主题的文章。 这是一个例子:

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。

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

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

注意:对于您的情况,您将不希望真正进入全屏状态,因为您可能仍需要访问某些控制按钮,因此只需从全屏尺寸中减去所需的数量即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM