お正月に備えて「百人一首学習アプリ」を作ろうと思います。
どんな構成にするかまだ未定ですが、なにか書き始めれば少しずつでも進歩するでしょう。
① 構成:
・tkinterでGUIを作る
・乱数に応じて上の句を表示
・数秒後にその下の句、歌人、現代訳表示
下の句を思い浮かべるため数秒後の表示とする
・次へ、終わるの二つのボタン
次のようなGUIを考えました。
② tkinter用code案
from time import sleep
import random
import tkinter as tk
import sys
root = tk.Tk()
root.title(‘百人一首1.1.txt’)
root.geometry(‘350×300’) # 大きさの単位はピクセル、ラベルなどの単位とは違うようだ?
# Label
lbl1 = tk.Label(text=’上の句’)
lbl1.place(x=30, y=30)
lbl2 = tk.Label(text=’下の句’)
lbl2.place(x=30, y=60)
lbl3 = tk.Label(text=’作者’)
lbl3.place(x=30, y=90)
lbl4 = tk.Label(text=’現代訳’)
lbl4.place(x=30, y=120)
# Text(Entry)
txt1 = tk.Entry(width=40)
txt1.place(x=70, y=30)
txt2 = tk.Entry(width=40)
txt2.place(x=70, y=60)
txt3 = tk.Entry(width=15)
txt3.place(x=70, y=90)
txt4 = tk.Entry(width=15) #複数行入力故entryはNGでは?
txt4.place(x=70, y=120)
#Command Button1
btn1=tk.Button(root, text=’開始/次へ’)
btn1.place(x=70, y=230)
#Command Button2
btn2=tk.Button(root, text=’終わる’)
btn2.place(x=220, y=230)
root.mainloop()
—————–
このcodeで図のようなGUIができる。
現代訳が数行に渡るので、text-entryでは無理。
Pythonのwidgetには、excelのtextboxみたいなのが見つからない。
もう少し方法を考えましょう。
③ 文字列複数行表示
tkinterにtextと言う部品(widget)があるけど、今回の使い方には少し難がありそう。
そこで下記のcode、図のようにラベルを使うことにした。
・まずcodeを少し書き換える
txt4 = tk.Entry(width=15) #複数行入力故entryはNGでは?
txt4.place(x=70, y=120)
・次のようにtxt4をLabel4にする(分かりやすく項目別に改行して書いている)。
lbl4=tk.Label(
root,
width=35,
height=3,
#bg=’yellow’,
relief=tk.RIDGE,
bd=2
)
lbl4.place(x=65,y=140)
これで次のようなGUIになる。
④ 残念上図は失敗
これはLabelなので、大きくしても真ん中に一行しか入らない様子。
ではこれでどうだ!
Labelの代わりにmessageBoxと言うwidget(パーツ)を見つけた。
これだと文字列が80字以上でも自動折り返しをしてくれ、しかも
boxのサイズも自動的に変更してくれる。
素晴らしい!
では次回は稿を改めて書きます。
新規投稿で続く。