2009-08-05 3 views
9

Panel의 컨트롤을 수정하고 업데이트하고 코드 실행을 계속하려고합니다. 문제는 패널 자체가 새로 고침되기 전에 유휴 상태를 기다리고있는 것으로 보입니다. 나는 물론 GetSizer()와 마찬가지로 새로 고침을 시도했다. Layout()은 SendSizeEvent() 메서드를 사용하여 프레임에 크기 조정 이벤트를 보냈지 만 아무 소용이 없었다. 나는 여기서 패배하고 있는데, 나는이 패널을 강제로 다시 그릴 수있는 방법이 없다는 것을 믿기 어렵다. 다음은 컨트롤을 변경하는 코드입니다.어떻게 wx.Panel을 새로 고침 하시겠습니까?

def HideButtons(self): 
     self.newButton.Show(False) 
     self.openButton.Show(False) 
     self.exitButton.Show(False) 
     self.buttonSizer.Detach(self.newButton) 
     self.buttonSizer.Detach(self.openButton) 
     self.buttonSizer.Detach(self.exitButton) 
     loadingLabel = wx.StaticText(self.splashImage, wx.ID_ANY, "Loading...", style=wx.ALIGN_LEFT) 
     loadingLabel.SetBackgroundColour(wx.WHITE) 
     self.buttonSizer.Add(loadingLabel) 
     self.GetSizer().Layout() 
     self.splashImage.Refresh() 

다른 사람이 이와 같은 문제가 발생 했습니까? 그렇다면 어떻게 해결 했습니까?

+0

'self.Show()'를 사용해 보셨습니까? –

답변

13

Update 메서드를 호출해야합니다.

+3

'Update()'만으로는 제 경우에 도움이되지 않았습니다. ('StaticBitmap'은'Panel'의'GridSizer'에 있습니다), 문서는'Refresh()' 무조건적인 repaint를 유발할 것입니다. -'Update()'가 올 때 수행합니다. – virtualnobi

+0

사실'Refresh()'가 저에게 효과적입니다! – GreenAsJade

+0

Phoenix가 doc 링크 구조를 변경했습니다. 'Update' [이사했습니다] (https://wxpython.org/Phoenix/docs/html/wx.Window.html?highlight=wx.window#wx.Window.Update). 이것은 내가 바라는 바로 그 것이다. 감사! –

1

패널의 가변 부분을 서브 패널에 넣을 수 있습니다 (예 : 예 :

def MakeButtonPanels(self): 
    self.buttonPanel1 = wx.Panel(self) 
    self.Add(self.buttonPanel1, 0, wxALL|wxALIGN_LEFT, 5) 
    # ... make the three buttons and the button sizer on buttonPanel1 

    self.buttonPanel2 = wx.Panel(self) 
    self.Add(self.buttonPanel2, 0, wxALL|wxALIGN_LEFT, 5) 
    # ... make the loading label and its sizer on buttonPanel2 

    self.buttonPanel2.Show(False) # hide it by default 

def HideButtons(self): 
    self.buttonPanel1.Show(False) 
    self.buttonPanel2.Show(True) 
    self.Layout() 
+0

그것은 숨기고 보이지 않는 부분입니다. – Fry

4

마찬가지로 StaticBitmap이 있었으며 이러한 기술 (승인 된 대답에 제안 된 Update 포함)을 사용하여 업데이트하지 않았습니다.

Panel에서 .Hide().Show()을 호출하면 이미지를 새로 고칠 수 있다는 것을 알게되었습니다. StaticBitmap과 같은 하위 수준의 개체에 대해 함수를 실행 한 경우에도 마찬가지라고 생각합니다.