【Part4】python3-tkinterの使い方
1.はじめに
前回はボタンを押すと入力項に書かれた文を取得し、メッセージボックスで表示する機能を作りました。
↓前回の記事
今回はボタンを押すと,入力項に書かれた数字の数だけ新たな入力項を出現させる機能を作ってみます。
2.コード
例えば、入力項に5を代入して水色のボタンを押すと入力項が5つ増えます。
3. 説明
今回、前記事から変わった部分は以下の関数の中身だけです。
text=Entry_box.get() で入力項に代入された数字を読み取ります。これは前記事と同じで,get()関数で入力項(Entry_box)に書かれた文字を取得しています。
for i in range(int(text))はint(text)の回数だけ以下のコードを繰り返すという意味になります。textというのは先ほど入力項に書かれた数字(画像だと5)です。しかしfor i in range(text)と書くとエラーになります。これは入力項に書かれた5は数字ではなく文字として分類されているからです。そのため文字を数字に変換するために、int(text)として整数に変換しています。
またrange()を忘れて、for i in int(text)と書くとエラーになるので忘れずrange()を書きましょう。
Editbox=tk.Entry(width=40)
Editbox.place(x=50,y=30*(i+0.3)+30)
幅40の入力項をy方向にずらしながら生成するコードになります。
y=30*(i+0.3)+30ですが、iというのはfor文のループの回数です。そのため1回目はy=30*(0+0.3)+30=39、2回目のループではy=30*(1+0.3)+30=69と30ずつyがずれていくため等間隔に入力項が作成されます。
おすすめ書籍
tkinterは参考書が非常に少ないです、というより日本語の参考書はほぼ皆無です。個人的には以下がお勧めです。
私が勉強していた時は以下のような参考書がなくネットで調べながら苦労してtkinterを覚えましたが、もし当時こんな書籍があったらもっと楽に学べたのに...と思うくらい基本的内容について丁寧に書かれています。
Amazonの月額読み放題サービス「Kindle unlimited」でも読めます。
初回30日間は無料、退会も簡単なので試しに無料体験して読んでみてもよさそうです。
4.まとめ
今回はボタンを押すと入力項に書かれた数字を読み取り、その数字の数だけ新たな入力項を作成する機能を作りました。
これを利用すれば、例えばToDoリストを追加する動作などに使えそうですね。
次回は一回で何個も入力項を作るのではなく、ボタンを押すたびに1個づつ新しい入力項が出現する機能を作ってみたいと思います。
↓次の記事