wxpython用id控制一个小部件

时间:2010-12-03 13:54:15

标签: wxpython

嘿:) 好吧我正在寻找一种在wxpython中创建大量面板的方法,并在列表中追加它们,但我不知道如何最好地做到这一点。例如 对于列表中的我: wx.Panel(self,-1,pos,size)#create panel

以某种方式存储它,例如

anotherlist.append(a)#where a是对面板的保留 当我说hold时我的意思是说变量名是x,所以 x = wx.Panel。我会调用x,hold cos x可以用于小部件的任何操作,例如x.SetPosition等。我在想也许使用一个类(wx.Panel)来创建面板并保存面板的id。问题是有id我不知道如何访问小部件。说面板ID是-206。我该怎么做像widgetid(-206).SetBackgroundColour(“RED”)

2 个答案:

答案 0 :(得分:3)

有些人通过在文件开头创建ID来解决这些问题:

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

然后执行类似myPanel = wx.FindWindowById(panelOneId)的操作。当然,如果您所做的只是设置面板属性,那么您可能只需要创建一个这样的辅助方法:

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

如果您为面板指定了唯一的名称参数,也可以使用wx.FindWindowByName。

答案 1 :(得分:1)

一个简单的解决方案是使用字典将ID映射到面板

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

然后,您可以访问ID列表(.keys()),面板列表(.values())以及从ID到面板的映射。