在范围内设置许多textctrl itering的名称

时间:2017-10-01 23:29:21

标签: python wxpython

请我想在面板中放置几个​​textctrl并尝试动态设置名称和位置,使用以下代码,控件出现但我无法确定名称。

        p=0
    for i in range(20):
        p += 25
        indesc ="ingdesc"
        indesc = indesc + str(i)
        print indesc

        self.HERE I WANT TO PUT indesc value = wx.TextCtrl(self.panel,pos=(280,190+p),size=(350,23),style=wx.TE_READONLY)

感谢

1 个答案:

答案 0 :(得分:0)

你可以这样做:

import wx

class MainFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Indesc')
        self.panel = wx.Panel(self)
        textctrls=[]
        for i in range(20):
            textctrls.append("self.indesc"+str(i))
        p=0
        for i in range(20):
            p+=25
            textctrls[i] = wx.TextCtrl(self.panel,pos=(10,10+p),size=(350,23),style=wx.TE_READONLY)
        textctrls[0].SetValue("Item 0")
        textctrls[11].SetValue("Item 11")
        self.Show()

if __name__ == '__main__':
    app = wx.App()
    frame = MainFrame()
    app.MainLoop()

enter image description here

但是它很大但是你让自己的生活变得困难,因为你无法通过字符串名self.indesc11访问这些项目,例如你必须通过位置来引用它。 list(据我所知) 如果您在编写此类事物时明确表示未来是明智和清晰的。它毕竟只是复制和粘贴。