御神籤を引いて見よう

Python学習のため御神籤アプリを作ってみます。

① 大吉、中吉、小吉を引き当てる

*ボタンでキャンバスに御神籤の結果を表示する
*ウインドー上に用意するもの:ライブラリーは乱数関数が必要
・キャンバス、背景
・巫女さん
・御神籤表示ラベル
・御神籤購入用ボタン


② プログラム

#御神籤ソフト1.py  6/1/2020

import random
import tkinter as tk

root = tk.Tk()
root.title('御神籤ソフト')
root.resizable(False, False) #ウィンドーサイズを変更させない

canvas = tk.Canvas(root, width=800, height=600)
canvas.pack()

画像= tk.PhotoImage(file="napa.png")#jpgは動作しない
canvas.create_image(400,300, image=画像) #画像表示

root.mainloop()

runするとまだこんなwindowです。

 

 

 

 

 

 

 

 

 

 

 


 

② キャンバスの代わりにラベルにを使った場合

import tkinter as tk
root=tk.Tk()
#root.geometry('200x300') #imgのサイズに合わせてwindowも変わるのでここでは指定しなくても良い。

img=tk.PhotoImage(file='miko_half.png')
lable=tk.Label(root, image=img).pack()

root.mainloop()

・ラベルでもキャンヴァスでも画像の貼付けは出来ますが、参考本ではキャンバスを使ってます。
・御神籤表示ラベル、御神籤購入用ボタンは次回装着します。

次の絵になる

 

 

 

 

 

 

 

 

 

 


 

ではこれに
・巫女さん
・御神籤表示ラベル
・御神籤購入用ボタン
を張り付けて完成品とします。

 

1 import tkinter as tk
2 import random
3  
4 root=tk.Tk()
5 root.title("御神籤ソフト")
6 root.geometry('400x300')
7  
8 img_1=tk.PhotoImage(file='haikei.png')
9 label_1=tk.Label(root, image=img_1).pack()
10  
11 img_2=tk.PhotoImage(file='miko1c.png')
12 label_2=tk.Label(root, image=img_2)
13 label_2.place(x=30, y=150)
14  
15 def 籤を引く():
16     籤リスト= ["大吉","中吉","小吉","凶","大吉","中吉","小吉","大吉","中吉","小吉",]
17     籤 = random.choice(籤リスト)
18  
19     text_1=tk.Entry(root)
20     text_1.delete(0, tk.END)
21     text_1.insert(tk.END, 籤)
22     text_1.place(x=200,y=100) 
23  
24 def quit():
25     root.destroy()
26  
27 btn_1=tk.Button(root,text="御神籤を引く",width=10, command= 籤を引く)
28 btn_1.place(x=150,y=200)
29  
30 btn_2=tk.Button(root,text="お金なくなった",width=10, command=quit)
31 btn_2.place(x=250,y=200)
32  
33 root.mainloop()

 

 

・凶の出る確率を減らすため、大吉などの出現を3倍にしました。

余り格好の良いものではありませんが、Pythonの練習で~す。

 

終わり

 

Python別館
Python別館 目次

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

Python別館
Q&A テンプレート GUI編

良く英単語アプリなどを作る時に似たようなアプリになりますので、すぐ真似できるようにテンプレートらしき …

Python別館
文字列の配置

ラベル、テキストボックスなどで、文字列の配置が微妙に異なります。 いつも迷うので基本的なものを挙げて …