Pythonにてtkinterを利用したGUI作成の勉強をしております。
初学者でclassの使い方も十分に理解できておらず勉強しながら習得を進めています。
今回教えていただきたいのはclassに関することです。
作りたいサンプルはTkinterで複数のラベルを配置するプログラムです。
ネットで調べながら作成したコードは以下の通りです。
実行すると、for文を使って3つの「猫」というラベルが生成されています。
この後、ボタンを配置して任意のラベルの位置を移動させるコードに改造しようと考えております。
また、インスタンスも50個程度まで作成できるように拡張させる予定です。
ここで疑問なのですが、私のコードはfor文をつかってroot2という名前のインスタンスを3つ作りました。
このままですと、3つのインスタンスの内、同じ名前でインスタンスを作成しているので任意のラベルを移動することができないのではないかと思います。
ですが、コードを実行してもエラーが発生することなく実行できます。
そこで質問ですが、
質問①インスタンスの生成をfor文で、同一名前のインスタンスを複数作成することは一般的なのでしょうか?
質問②私の作成したコードで、3つ作成したラベルの内、1つを特定して、例えば.placeで位置座標変更を変更するなどの処理が可能でしょうか。
質問③もし、複数のインスタンスを生成し、それぞれを名前で区別したい場合、常套手段があれば教えてください。
import tkinter as tk class MAKE_GUI(tk.Frame): def __init__(self,master=None): tk.Frame.__init__(self,master=None) self.master.title('サンプル') self.master.geometry('600x900') self.TSUIKA=TSUIKA class TSUIKA: ITEM_LIST_KAZU=0 def __init__(self,master=None): self.x_zahyou=10 self.y_zahyou=50+30*int(TSUIKA.ITEM_LIST_KAZU) label2 = tk.Label(master, text='猫', bg='white') label2.place(x = self.x_zahyou , y = self.y_zahyou) TSUIKA.ITEM_LIST_KAZU+=1 def main(): root=MAKE_GUI() #インスタンスをforで複数つくるのはプログラミング上問題あるのでしょうか? for i in range(3): root2=TSUIKA() root.mainloop() print('finish') if __name__ == '__main__': main()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。