データをプログラムに書き込んでおく

大量のデータの場合や頻繁に変更になるようなデータは外部ファイルとしておき、必要に応じて読み込めばよいのですが、
exe化するときに面倒でエラーがよく起きます(自分の場合)。

そこで変化しないデータの場合は、プログラム中に書き込んだほうが便利なので、その方法で和歌Q&Aを作りました。

 

 1import tkinter as tk
 2import random
 3 
 4root = tk.Tk()
 5 
 6root.geometry(‘500×250’)
 7root.title(‘有名和歌’)
 8 
 9 
 10# Label
 11lbl1 = tk.Label(text=’和歌:’)
 12lbl1.place(x=10, y=30)
 13lbl2 = tk.Label(text=’歌人:’)
 14lbl2.place(x=10, y=80)
 15 
 16 
 17# Text(Entry)
 18txt1 = tk.Entry(width=60)
 19txt1.place(x=60, y=30)
 20txt2 = tk.Entry(width=30)
 21txt2.place(x=60, y=80)
 22 
 23 
 24歌集 = {
 25    “秋来ぬと 目にはさやかに見えねども 風の音にぞおどろかれぬる”:”藤原敏行”,
 26    “秋の野に 咲きたる花を指(および)折り かき数ふれば七種(ななくさ)の花”:”山上憶良”,
 27    “天つ風 雲の通ひ路吹き閉ぢよ をとめの姿しばしとどめむ”:”僧正遍照”,
 28    “天の原 ふりさけみれば春日なる 三笠の山に出(いで)し月かも”:”安倍仲麿”,
 29    “あをによし 奈良の都は咲く花の にほふがごとく今さかりなり”:”小野老(おのの おゆ)”,
 30    “いにしへの 奈良の都の八重桜 けふ九重ににほひぬるかな”:”伊勢大輔”,
 31    “大海の いそもとどろに寄する波 われてくだけて さけて散るかも”:”源実朝”,
 32    “奥山に 紅葉踏みわけ鳴く鹿の 声きく時ぞ秋は悲しき”:”猿丸大夫”,
 33    “かささぎの 渡せる橋におく霜の 白きを見れば夜ぞ更けにける”:”大伴家持”,
 34    “君がため 惜しからざりし命さへ 長くもがなと思ひけるかな”:”藤原義孝”,
 35    “こちふかば 匂ひおこせよ梅の花 あるじなしとて春な忘れそ”:”菅原道真”,
 36    “銀(しろかね)も 金(くがね)も玉も何せむに まされる宝子にしかめやも”:”山上憶良”,
 37    “田子の浦に うち出でて見れば白妙の 富士の高嶺に雪は降りつつ”:”山部赤人”,
 38    “月みれば 千々(ちぢ)に物こそ悲しけれ 我が身ひとつの秋にはあらねど”:”大江千里(おおえのちさと) “,
 39    “花の色は 移りにけりないたづらに わが身世にふるながめせしまに”:”小野小町”,
 40    “春過ぎて 夏来にけらし白妙の 衣干すてふ天の香具山”:”持統天皇”,
 41    “東(ひんがし)の 野にかぎろいの立つ見えて かえりみすれば 月かたぶきぬ”:”柿本人麻呂”,
 42    “見わたせば 花ももみじもなかりけり 浦のとまやの秋の夕ぐれ”:”藤原定家”,
 43    “世の中に たえて桜のなかりせば 春の心はのどけからまし”:”在原業平”,
 44    “我が園に 梅の花散る久かたの 天より雪の流れ来るかも”:”大伴旅人”,
 45     }
 46 
 47def btn1_click():
 48    txt1.delete(0, tk.END)
 49    txt2.delete(0, tk.END)
 50    要素 = random.choice(list(歌集.keys())) #ここの要素はkeyである和歌となる
 51    txt1.insert(tk.END, 要素)
 52 
 53    def show_歌人(): #上のdef btn1_clickの後にこの関数が動作する
 54        txt2.delete(0, tk.END)
 55        txt2.insert(tk.END, 歌集[要素]) #ここの要素は歌人となる
 56 
 57    #Command Button2 #btn1がクリックされてからbtn2が表示・処理が始まる
 58    btn2 = tk.Button(root, text=’歌人の表示’, command=show_歌人)
 59    btn2.place(x=225, y=150)    
 60 
 61#Command Button1
 62btn1 = tk.Button(root, text=’開始/次へ’, command=btn1_click)
 63btn1.place(x=100, y=150)
 64 
 65 
 66def destroy():  #プログラム終了の決まりcode
 67    root.destroy()    
 68 
 69#Command Button3
 70btn3 = tk.Button(root, text=’終わり’, command=destroy)
 71btn3.place(x=350, y=150)
 72 
 73root.mainloop()

 

runさせると下図のようになります。 前のプログラムのマウスoffで歌人を表示させるのは、押さえているのが面倒なので別ボタンとしました。

 

 

 

 

 

 

 

 

Python小学館
リストのデータを合算する(ブラックジャックに使用する)

トランプのブラックジャック(BJ)を作るための準備として、点数計算用の関数を作ります。BJはdeal …

Python別館
Python検定試験準備 Q37

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

Python小学館
リストボックスから選択する

アプリを作るときによくリストボックスから選択したい場合がよく有ります。 忘れがちなのでここ …