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