百人一首学習アプリ ー Ⅰ

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

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

① 構成:

・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別館 目次

・Pythonで作成したアプリ関連の記事は「Python別館」に、・widgetやその使用方法・それ …

Python別館
Python検定試験準備 Q37

Python検定試験と云うのがあるらしいと別項に上げましたが、学習して損することは無いので始めて見ま …

Python別館
WordPressのサイトにcodeを載せたい

editorのせいか自分の知識不足のせいか分かりませんが、ここにPythonのcodeを書くと見かけ …