2016-12-05 4 views
0

내 프로그램의 top_panel을 전체 화면으로 만 만들려고합니다.이 작업을 수행 할 버튼이 있기를 바랍니다. 제가 직면 한 문제는 패널을 전체 화면으로 강제 전환하지 않고 자체 패널로 만드는 방법을 모르는 것입니다. 전체 프레임은 내가 같은 패널 전체 화면으로, 당신이 날wxpython 패널 전체 화면?

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????? 
+0

메인 프레임이 있고 일부 이벤트에서 패널을 표시하고 전체 화면으로 만들려고합니까? 너 시도 했니? 무슨 문제 있었 니? 이 기능은 TLW에서만 사용할 수 있습니까? 스크립트를 실행하지 않고 백 트레이스를 게시하십시오. – Igor

답변

0

당신은 자식 창을 표시 할 수 없습니다 도울 수 있기를 바랍니다

(참) ShowFullscreen를 사용하여 전체 화면으로 이동합니다. 최상위 수준의 프레임 만 전체 화면으로 표시 할 수 있지만 패널에 포함 된 프레임을 만든 다음이 프레임을 전체 화면으로 표시하는 것이 패널을 표시하는 것과 완전히 동일하지 않기 때문에 전혀 문제가되지 않습니다. 전체 화면.

+0

고마워, 내가 먼저해볼 것이고 어쨌든 대답 할거야. – Complexity

+0

나는 그것을 시험해 보았고, 새로운 프레임을 포함하는 완전히 새로운 .py를 만들고 싶었고, 한번만 실행했다. 인식 할 수있는 파일 확장자는 비디오에만 있습니다 – Complexity

0

블로그에이 주제에 관해 작성했습니다. 다음은 그 예입니다.

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에서 작동하지 않는 것으로 나타났습니다.

+0

나는 내 프레임에 3을 가지고 있기 때문에 한 번만 전체 패널로 이동하려는 단일 패널에 문제가 있다는 것을 알았지 만 왼쪽 클릭 두 번 실행하면됩니다. – Complexity

+1

그런 다음 더블 클릭 이벤트를 해당 패널에 바인딩합니다. 누군가 두 번 클릭하면 전체 화면으로 새 프레임을 열 수 있습니다. 그것은 같은 패널이 아니지만 그 것처럼 보일 것입니다. –

+0

그래, 새로운 .py를 만들면서 끝내고 새로운 프레임과 패널을 만들면 비디오 파일이 선택되면 새로운 .py가 열리 며 새 패널 안에는 프레임을 검사하는 프레임 안에 함수가 설정되어있다. 전체 화면이거나 그렇지 않은 경우 설정에 따라 설정됩니다. 그리고 패널 내에서 바인딩을 만들었습니다. 두 번 클릭하면 작동하고 parent.onFullScreen 함수를 새 프레임 내에서 만들었습니다. – Complexity

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

참고 : 경우에 당신은 아마 여전히 컨트롤 버튼에 액세스해야하므로 정말 그렇게 당신이 전체 화면 크기에서 필요한 금액을 공제, 전체 화면으로 가고 싶어하지 않을 것이다.