2010-12-03 14 views
1

嘿:) 確定即時通訊尋找一種方法來在wxpython中創建大量的面板,並追加到他們的列表中,但我不知道如何最好地做到這一點。例如 對於i在列表: wx.Panel(個體,-1,POS,大小)#創建的面板wxpython控制編號爲

保持某種方式存儲到它例如

anotherlist.append的(a)一個#WHERE是持有面板 當我說hold我的意思是說變量名是x,所以 x = wx.Panel。我會打電話x保持cos x可以用於任何操作的部件,例如x.SetPosition等..我想也許使用一些類(wx.Panel)創建面板並保存面板的ID。問題是有ID,我不知道如何訪問小部件。說面板id是-206。

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

,然後做:我如何通過在文件的開頭創建IDS做類似爲widgetid(-206).SetBackgroundColour(「RED」)

回答

3

有人解決這些事情像myPanel = wx.FindWindowById(panelOneId)。當然,如果你正在做的是設置面板屬性,它可能只是理所當然您創建一個輔助方法是這樣的:

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

您還可以使用wx.FindWindowByName,如果你給了獨特的面板名稱參數。

+0

非常感謝你mike wx.FindWindowById正是我一直在尋找的! :) – James 2010-12-04 21:33:45

1

一個簡單的解決方法是使用一個字典ID映射到面板

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

然後,您可以訪問(.keys())ID的列表,面板的列表(.values())和ID的映射面板。

+0

它看起來像邁克說,壽,即wx.FindWindowById()是基本相同的,你不必創建字典無論如何,因爲wx.FindWindowById(20)將返回wx.Panel(自我,ID = 20)對象...謝謝你的回答肯定是有用的 – James 2010-12-04 21:33:13