百人一首学習アプリ ー Ⅰ

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

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

① 構成:

・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別館
1年間のまとめ ③

Pythonの学習を初めてから約1年が過ぎました。 何もないところから始めたので、遅々として進歩しま …

Python別館
Pythonファイルをexe化する ⑤

Pythonンプログラムを作っても、他人に渡す時はexeファイルにしないといけません。コマンドプロン …

Python別館
うるう年を計算する ③

先にカレンダー作成をしましたが、来年はオリンピックの年でまた閏年でもあります。閏年とは、・西暦が4で …