嘿:)好的,我正在寻找一种在wxpython中创建大量面板的方法,并在列表中附加一个hold,但我不确定如何做得更好。例如列表中的i: wx.Panel(self,-1,pos,size) #创建面板
以某种方式保存它,例如
anotherlist.append(a) #当我说保持时,a是面板的保持,我的意思是说变量名是x,所以x= wx.Panel。我会称x为hold,因为x可以用于对小部件的任何操作,例如x.SetPosition等。我在想也许可以使用一个类(wx.Panel)来创建面板并保存面板的id。问题是,有了id,我不知道如何访问小部件。假设面板id是-206。我该怎么做像widgetid(-206).SetBackgroundColour("RED")这样的东西?
发布于 2010-12-04 03:29:28
有些人通过在文件开头创建ids来解决这些问题:
panelOneId = wx.NewId()
panelTwoId = wx.NewId()然后执行类似myPanel = wx.FindWindowById(panelOneId)的操作。当然,如果您所做的只是设置面板属性,那么您可能应该创建一个如下所示的helper方法:
#----------------------------------------------------------------------
def createPanel(self, sizer, id, bg):
""""""
panel = wx.Panel(self, id=id)
panel.SetBackgroundColour(bg)
sizer.Add(panel)如果您已经为面板提供了唯一的名称参数,您也可以使用wx.FindWindowByName。
发布于 2010-12-04 09:27:27
一个简单的解决方案是使用字典将ids映射到面板
panels = {}
for i in range(100):
id = wx.NewId()
panels[id] = wx.Panel(parent, id, ...)然后,您可以访问id列表(.keys())、面板列表(.values())和从id到面板的映射。
https://stackoverflow.com/questions/4346191
复制相似问题