wxpython控制id为的小部件

wxpython控制id为的小部件,wxpython,Wxpython,嘿:) 好的,我正在寻找一种在wxpython中创建大量面板的方法,并在列表中为它们添加一个hold,但我不确定如何最好地做到这一点。例如 对于列表中的i: wx.面板(自-1,位置,大小)#创建面板 以某种方式保存它 另一个列表。附加(a)#其中a是面板的保持 当我说hold时,我的意思是说变量名是x,所以 x=wx.Panel。我会将x称为hold,因为x可以用于小部件的任何操作,例如x.SetPosition等。。我在想也许可以使用一个类(wx.Panel)来创建面板并保存面板的id。。问

嘿:) 好的,我正在寻找一种在wxpython中创建大量面板的方法,并在列表中为它们添加一个hold,但我不确定如何最好地做到这一点。例如 对于列表中的i: wx.面板(自-1,位置,大小)#创建面板

以某种方式保存它 另一个列表。附加(a)#其中a是面板的保持 当我说hold时,我的意思是说变量名是x,所以
x=wx.Panel。我会将x称为hold,因为x可以用于小部件的任何操作,例如x.SetPosition等。。我在想也许可以使用一个类(wx.Panel)来创建面板并保存面板的id。。问题是有id,我不知道如何访问小部件。假设面板id为-206。我如何做widgetid(-206).setBackgroundColor(“红色”)

有些人通过在文件开头创建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。

有些人通过在文件开头创建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。

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

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

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

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

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

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

正如mike所说,wx.FindWindowById()基本上是相同的,您不必创建字典,因为wx.FindWindowById(20)将返回wx.panel(self,id=20)对象。。。谢谢这个答案肯定是有用的,就像mike说的那样,wx.FindWindowById()基本上是一样的,你不必创建字典,因为wx.FindWindowById(20)将返回wx.Panel(self,id=20)对象。。。谢谢这个答案肯定是有用的谢谢你这么多mike wx.FindWindowById正是我想要的!:)非常感谢mike wx。FindWindowById正是我想要的!:)