

tkinterで、18個の図形の作成時に、管理用のためにオブジェクトに付随した変数、object0 ~ object 17 を作りたいと思っています。  
そのため、カウント変数`i`を用い、オブジェクトの作成時に一緒に変数を割り当てようと考えました。

[code]

    for i range (0,17):
    　"object"i = canvas.create_rectangle :……
    
[/code]

という形で変数を作成しようとしましたが違いました…  
正規表現の活用なども出来ないかと考えましたが、上手く思い浮かばず。

どのようにすれば実現できるかご存知の方がいらっしゃれば、ご教示いただけると幸いです。  
私がそもそも実現不可能な事をしようとしているならば、このアプローチは断念して、1行ずつ object1 = … 、object2 = …
と変数を作成しようと思います。


CC BY-SA 4.0
2022-07-30T13:54:56.557
90291
2022-08-06T06:26:58.997
2022-07-31T10:52:40.597
3060
53774
question
python tkinter
カウント変数を用いた変数の作成


惜しいですね。Pythonの「リスト」を使って表現してみると次のようになります。ぜひ、お手元の環境で実行してみてください。`objects` がリストです。

[code]

    objects = []
    
    for i in range(18):
      objects.append("element " + str(i))
    
    print(objects)
    
[/code]

`append` は、配列に要素を追加するメソッドです。引数をTkinterのオブジェクトにすれば、やりたいことが達成できるはずです。

参考：[リスト型 (list) - 組み込み型 — Python 3.10.4
ドキュメント](https://docs.python.org/ja/3/library/stdtypes.html#lists)


CC BY-SA 4.0
2022-07-30T14:08:26.727
90292
2022-07-30T14:08:26.727
7500
90291
answer


execコマンドを使うことで、コードにカウント変数の値を埋め込むことができます。

[code]

    for i in range(0,17):
      exec("object{}= canvas.create_rectangle……".format(i))
    
[/code]

`exec`と`format`の説明として、

  * `exec`は、引数として与えられた文字列をPythonのコードとして実行します。
  * `format`は、引数（今回は `i`の値）を`{}`の位置に代入します。

これで、object0 から object17 までの変数を作れるはずです。


CC BY-SA 4.0
2022-08-06T06:24:13.047
90401
2022-08-06T06:26:58.997
2022-08-06T06:26:58.997
53704
53704
90291
answer