tkinterを用いて下図のようなGUIを作成しています。
しかしボタンの分だけ、次のようなコードをひたすら書いていくのは、コードが読みにくくなって仕方ないと思うのですが、何かいい書き方あるのでしょうか。それともひたすら並べていくのでしょうか。
ざっくりとした質問となり、恐縮ですが、ご回答いただければ幸いです。
python
1label_input_x0 = Tkinter.Label(text=u'x0') 2label_input_x0.pack() 3 4input_x0 = Tkinter.Entry() #EditBox 5input_x0.pack()
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
python
1import tkinter 2 3labels = 'x0', 'y0', 'nx', 'ny', 'Px_small', 'Py_small', 'Px_large', 'Py_large' 4entries = {} 5 6root = tkinter.Tk() 7 8for label in labels: 9 tkinter.Label(text=label).pack() 10 entries[label] = tkinter.Entry() 11 entries[label].pack() 12 13def submit(): 14 for label in labels: 15 print(label, ':', entries[label].get()) 16 17tkinter.Button(text='Submit', command=submit).pack() 18 19root.mainloop()
投稿2020/01/11 16:12
編集2020/01/11 16:17総合スコア5406
0
そのような書き方を冗長と考えるかどうかは、考え方によるので一概に言えないと思います。
ボタンが多いといえば電卓アプリですが、このサイトのように、べたっと書いてあるものが多いですね。
やろうと思えば、
python
1button_array[i] = Tkinter.Label(text='x{}'.format(i))
のようにボタンそのものをリストに入れることもできるので、記述は短くできると思いますけど、「n番目のボタンはxx」というような関係を別で管理しなければならないので、全体的な見通しが良くなるわけではありません。
名前とか他の属性の情報を関連付けるのであれば、dictを使うのがいいと思います。リストと組み合せることになるでしょう。 このあたりになると、ベタっと書くのと分量はあまり変わならいかもしれませんが、適切なデータ構造を選べば、規模が大きくなっても管理しやすいものにできるでしょう。
投稿2020/01/11 15:31
総合スコア12781
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
おはようございます。
問題文読ませていただきました。
こんな感じでいかがでしょうか?
python
1import tkinter 2 3labelList = 'x0', 'y0', 'nx', 'ny', 'Px_small', 'Py_small', 'Px_large', 'Py_large' 4entries = {} 5 6 7# entry Widgetへ書き込まれる内容を表示する関数 8def submit(): 9 for label in labelList: 10 print(label, ' : ', entries[label].get()) 11 12 13root = tkinter.Tk() 14 15# labelListの数だけ、label Widget, entry Widgetを作成する。 16# それぞれ作成したのちにpackを利用して、上から順に配置を行う。 17for label in labelList: 18 # Windowを親要素として、label Widgetを作成する。 19 # text : テキスト情報 20 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 21 labelTmp = tkinter.Label(root, text=label) 22 # Windowを親要素として、label Widgetをどのように配置するのか? 23 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 24 labelTmp.pack() 25 # Windowを親要素として、entry Widgetを作成する。 26 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/ 27 entry = tkinter.Entry(root) 28 # Windowを親要素として、entry Widgetをどのように配置するのか? 29 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 30 entry.pack() 31 # entry Widgetで入力されるデータを、entries(dict型)で保存する。 32 entries[label] = entry 33 34# Windowを親要素として、button Widgetを作成する。 35# text : テキスト情報 36# command : ボタンをクリックした時に、実行する関数を設定。submitとする。 37# Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/ 38button = tkinter.Button(root, text='Submit', command=submit) 39# Windowを親要素として、button Widgetをどのように配置するのか? 40# packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 41button.pack() 42 43# Windowをループさせて、継続的にWindow表示させる。 44# mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 45root.mainloop()
ご確認のほど、よろしくお願いいたします。????♂️
投稿2021/06/14 22:46
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/12 01:17