-1

wx.StaticTextwxFormbuilder でいくつかのウィジェットを作成し、それらを動的に参照できるようにしたいという状況に陥ることがよくあります。a0を通じて名前が付けられた多数の静的テキストがあるとしますa10

コードでそれらを見つけるにはどうすればよいですか?

1 つの方法は、すべての変数を含むリストを作成することですが、それは醜く、非効率的だと感じますか? そうではないかもしれませんが、少なくともコードはいたるところに長いリストが散らかっています。

 def updateLabels(self, data):
     guiLabels = [self.a0, self.a1, self.a2 ..... ]
     for i in range(len(guiLabels)):
         guiLabels[i].SetLabel(data[i)

これをどのように修正しますか?

もう 1 つの方法は、アプリの開始時に guiLabels リストを作成することです。ただし、それらを見つけるのにいくつか問題がありました。一番上のウィンドウで GetChildren() を呼び出し、すべての要素に異なる値wx.IDを設定しStaticTextてから、すべての要素を調べて、作成したこの ID を見つける必要があります..そして、これを行うときの書式設定は本当に重要ではありません..テキストの背景色が異なりますアライメントやその他のファンキーなものを尊重しません。

これを行う方法について何か考えはありますか?

4

1 に答える 1

1

たぶん、このようなものがあなたのために働くかもしれません:

for x in xrange(10):
    name = "a%s" % x # dynamically generating reference names
    obj = getattr(self, name) # getting the object reference from the parent object
    obj.SetLabel("xyz")
于 2015-12-16T20:01:08.007 に答える