2012-03-02 2 views
2

제목이 재미 있습니다. 그 영화와 같은 "개념"상황. 꿈속의 꿈에 빠져라. 안녕하세요. 저는 wxpython을 사용하여 앱을 만들고 있습니다. 나는 이런 식으로 뭔가를 달성하고 싶다. 나는 3 번 난 이벤트의 어떤 트랙이없는 다른 중첩 된 기능과 기능에서 점프처럼, 너무 많은 내부 통과 한wxPython의 "시작"상황

func1(self,event): 
     some widgets added 
     func2 
func2(self,event): 
     remove previous widgets (by using event.GetEventObject().GetParent().Hide()) 
     add new ones 
     func3 
func3(self,event): 
     remove widgets added in func2 
     recall widgets added in func1 (event.GetEventObject().GetParent().Show()) 

(이 문제의 단지 생각입니다) . 모든 기능에 통과하는 동안 내가

event.GetId() 

로 (목록에서) 이벤트의 ID를 저장하는 경우

, 내가 대체 에 그 ID를 사용할 수 있는지 방법이있다

event.GetEventObject().GetParent().Show() 
event.GetEventObject().GetParent().Hide() 

id1.GetEventObject().GetParent().Hide() 
id2.GetEventObject().GetParent().Show() 

나는 이런 종류의 것을 알고 싶습니다. 또는 더 나은 간단한 방법?

답변

0

여전히 문제가있는 경우 몇 가지 방법을 발견했습니다 ... 우선이 ID를 사용할 필요가 없습니다. ..... 훨씬 간단한 방법은 다른 패널을 만드는 것입니다 ... 당신이 하나를 숨길 때 ..... , 당신은 단순히 다른를 표시 할

panelname.Hide() 

,

panelname.Show() # Or this also works (event.GetEventObject().GetParent().Show()\Hide()) 

참고 할 수 있습니다 : 1) 모든 위젯을 (버튼 등을 제공하는 것을 잊지 마십시오) 개별 ID (또는 -1). 2) 함수 호출로 겹치는 패널을 만들 수도 있습니다 (예 : 버튼을 클릭 한 후). 3) 또한 공통 패널 (상위 패널)을 만든 다음 하위 패널을 만들고 본체에 만들 수 있습니다. 그런 다음이 패널을 바인딩 된 함수 (버튼 등이있을 수 있음)에 숨기거나 표시 할 수 있습니다.

나는 이런 식으로 내 문제를 해결했다. GetId()를 사용할 필요가 없었습니다. 그러나 다른 방법이있을 수 있습니다. 다른 아이디어가 있으면 공유하십시오. 언젠가 누군가에게 도움이되기를 바랍니다. 감사합니다.