多くの異なる記事、フォーラム、および質問を通していますが、まだこれを理解できません。ループを使用して100以上のWindowsフォームコンポーネントを作成する
私はプログラミングのnoobです。現在、IronPythonを使用してWindowsフォームアプリケーションを作成しています。 Visual Studio 2015は私のIDEです。
CSVから読み込まれた配列からメインフォームに100以上のラベル要素を作成したいと思います。配列は、そのためのコードはここにある、正常に動作します:
with open('sites.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
sites.append(row[0])
配列は次のようになります。私の「MyFormを」クラス内 サイト名1、サイト名2、サイト名3、サイト名4など
ましたフォームを表示する前に私の子コントロールを作成する場所です。この配列を通過し、リスト内の各サイト名エントリのラベルを作成するループがあります。
#Create Label for each Site
for s in sites:
sitename = str(s) #Convert Name into a String
elementname = sitename.replace(" ","") + "Label"
elementname = Label()
elementname.Name = str(elementname)
elementname.Parent = self
elementname.Location = Point(lastx,lasty)
counter = counter + counter
lasty = lasty + 10
変数sitename
にスペース(例えば、ノーザン・サイト)で文字列値にリストの現在のサイト名のエントリを変換します。
変数elementname
はsitename
変数を取り、スペースを削除し、名前の最後に単語ラベルを追加します。
それから、elementname
変数に保持されている名前でフォームにラベルオブジェクトを作成してみてください。
これは実行時にエラーまたは例外を発生させませんが、結果は配列/リストの最初のエントリの名前を持つ1つのラベルのみを出力します。
私は間違った角度から来ている可能性があります。私はなぜコードをステップ実行することで動作していないのか分かります。変数elementname
を持つすべての単一のラベルを作成し、私が意図していたsitenamelabelではありません。
辞書を使用して変数を動的に生成しようとしましたが、これはうまくいかないように見え、フォームにラベルの配列を作成してループに挿入しようとしましたが、 。