百人一首学習アプリ ー Ⅰ

お正月に備えて「百人一首学習アプリ」を作ろうと思います。

どんな構成にするかまだ未定ですが、なにか書き始めれば少しずつでも進歩するでしょう。

① 構成:

・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のサイズも自動的に変更してくれる。

素晴らしい!

では次回は稿を改めて書きます。

 

 

新規投稿で続く。
  

 

 

 

Python別館
Python 関数を自作しよう 

必ずしも自分の欲しい関数が見つかるわけではありませんので、自分で作ってみましょう。作り方は、1.処理 …

カメラ別館
EV計算機を作る 完成 ⑤ 1/28/2020 修正追記

被写体の明るさ(EV)計算機を作る④の続きやっと完成しました。巷には沢山同種のアプリがありますが、今 …

Python別館
関数の中身はどうなっているんだろう?

つまらないことに疑問を感じるときが良くあります。 Pythonの関数はとても便利ですが、時々この関数 …