2017-10-01 3 views
0

私はパネルに複数のtextctrlを入れたいと思います。次のコードで名前と位置を動的に設定しようとしていますが、コントロールは表示されますが、範囲内の多くのtextctrl iteringのセット名

 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) 

おかげ

+0

「TextCtrl」の表示内容を設定することを意味しますか? –

+0

いいえ、私は属性selfの名前に変数を設定したいと思います。各textctrl iteringにも名前を付けるには、ありがとう –

答えて

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の位置(参照できる限り)で参照する必要があります。
この種のものをコーディングするときに明示的であれば、将来的には分かりやすく明瞭です。結局コピー&ペーストだけです。

+0

ありがとう –

関連する問題