2010-12-03 3 views
1

인 위젯을 제어했습니다. 안녕하세요 :) 좋아요. 저는 wxpython에서 많은 수의 패널을 만들고 목록에 보류를 추가하는 방법을 찾고 있지만 최선의 방법을 모릅니다. 목록 I 예를 들어 wx.Panel (자기 -1, POS, 크기)wxpython ID가

든 그것 홀드 저장 패널 # 만들기 예

anotherlist.append은 (a) #where 내가 보류라고 말하면 변수 이름이 x라고 말하면 패널의 보류입니다. 따라서 x = wx.Panel입니다. 난 x를 보류 cos x는 위젯의 모든 조작 (예 : x.SetPosition 등)에 사용할 수 있습니다. 아마도 패널을 생성하고 패널의 ID를 저장하는 클래스 (wx.Panel)를 사용하는 것을 생각하고있었습니다. 문제는 이드가 어떻게 위젯에 액세스 할 수 있는지 모른다는 것입니다. 패널 ID가 -206이라고 말하면됩니다.

panelOneId = wx.NewId() 
panelTwoId = wx.NewId() 

를 그리고 일을 : 어떻게 파일의 시작 부분에 ID를 생성하여은 widgetid (-206) .SetBackgroundColour ("RED") 같은

답변

3

어떤 사람들은 사물의 이러한 종류를 해결해야합니까 myPanel = wx.FindWindowById (panelOneId)와 같은 것입니다. 당신이하고있는 모든 패널 속성을 설정하는 경우 물론, 그냥 이런 도우미 메서드를 만들 수 behoove 수 있습니다

#---------------------------------------------------------------------- 
def createPanel(self, sizer, id, bg): 
    """""" 
    panel = wx.Panel(self, id=id) 
    panel.SetBackgroundColour(bg) 
    sizer.Add(panel) 

당신은 고유의 패널을 제공 한 경우 또한, wx.FindWindowByName을 사용할 수 있습니다 이름 매개 변수.

+0

정말 감사합니다. wx.FindWindowById는 내가 찾고있는 마이크입니다. :) – James

1

간단한 해결책은 패널

panels = {} 
for i in range(100): 
    id = wx.NewId() 
    panels[id] = wx.Panel(parent, id, ...) 

그런 다음 ID 목록 (.keys()), 패널의 목록 (.values()) 및 ID에서 매핑에 액세스 할 수 있도록 ID를 매핑하는 사전을 사용하는 것입니다 패널.

+0

wx.FindWindowById()는 기본적으로 wx.FindWindowById (20)가 wx.Panel (self, id = 20)을 반환 할 것이므로 어차피 사전을 만들어야 만한다고 마이크가 tho라고 말한 것처럼 보일 것입니다. 개체 ... 덕분에 tho 대답은 확실히 유용합니다 – James