たまこんブログ

学生×プログラミング→2020年3月ブログ開設!趣味の一環でPythonでつくったゲーム や自分が読んで役に立った 本、知識などを紹介しています!

初めてのPython

 初めてPythonのプログラムを書いてみたので、載せてみることにしました。

これから学ぶ人のお役に立てたら幸いです。

  • Python環境の説明
  • プログラム実行結果
  • プログラム解説


f:id:tamakon3:20200322104615p:plain





Python環境の説明

 

プログラム説明

概要

ボタンを押すと中吉などの結果が出る。ただし大吉や大凶には特別なメッセージが出るようにした。

 

実行結果

f:id:tamakon3:20200320161109p:plain
 

 起動時の画面

f:id:tamakon3:20200320161340p:plain

実行結果 

 

プログラム解説

import tkinter as tk			#tkと定義する
import PIL.Image		#画像表示するライブラリを読み込む
import PIL.ImageTk
import random	#乱数をつくるライブラリを読み込む

def dispLabel():	#定義する
    KO.configure(text="")	#kujiintが5と6の時以外空白
    kujiint=random.randint(0,6) #kujiintは0から6の中からランダムで選ぶ	
    kuji = ["大吉","中吉","小吉","凶","末吉","大凶","大大吉"]#リスト
    kekka = kuji[kujiint]	#kekkaはkujiの中のkujiintからだす
    
    mes = "結果は"+kekka+"です"	#mesの文字はkekkaによって変わる
    lbl.configure(text=mes)	#mesを表示
    otuge(kujiint)		#otugeを呼ぶ(kujiintを渡す)
    dispPhoto(kujiint)		#dispPhotoを呼ぶ(kujiintを渡す)

def otuge(kujiint):	#otugeを定義
    
    otuge2 = ["とてもよい","よい","よくもなく悪くも無い","悪者","しらん","アイス買ってこい","名言を授ける"]			#リスト
    kekka2 = otuge2[kujiint] #kekka2(otuge2からkujiintによって値を選ぶ)
    otugelbl.configure(text = kekka2) #otugelblを変更する

    if(kujiint == 5):	#kujiintが5(大凶)を出した時
        KO.configure(text = "今すぐ板チョコアイスな") #KOに今すぐ板チョコアイスなを表示
        
    if(kujiint == 6):	#kujiintが6を出した時
        KO.configure(text =" 全ては自分から始まる") #KOに文字を表示
        
def dispPhoto(kujiint):	#定義
    if(kujiint == 0):			#kujiintが0(大吉)を出した時
        path= "omikuji_daikichi.png"	#大吉の画像を指定
    if(kujiint == 1):
        path= "omikuji_chukichi.png"	#kujiintが1を出した時
    if(kujiint == 2):			#中吉の画像を指定
        path= "omikuji_showkichi.png"
    if(kujiint == 3):
        path= "omikuji_kyou.png"
    if(kujiint == 4):
        path= "omikuji_suekichi.png"
    if(kujiint == 5):
        path= "omikuji_daikyou.png"
    if(kujiint == 6):
        path= "omikuji_daidaikichi.png"
    newImage = PIL.Image.open(path).resize((100,200))	 
#指定された画像を読み込んでサイズを指定
    imageData= PIL.ImageTk.PhotoImage(newImage)	#lblに画像を定義
    imageLabel.configure(image=imageData)		#lblに画像を表示
    imageLabel.image=imageData



def disptopimage():	#タイトル画像を定義
    path = "top.png"	#読み込む画像を指定
    newImage = PIL.Image.open(path).resize((300,100))		#画像のサイズ決定
    imageData= PIL.ImageTk.PhotoImage(newImage)		#lblに画像を定義
    topimage.configure(image=imageData)			#lblに画像を表示
    topimage.image=imageData

#メイン処理
root= tk.Tk()
root.geometry("300x500")	#画面大きさ
root.title("おみくじ")	#画面タイトル
topimage = tk.Label()	#御神籤画像の表示場所作った
lbl = tk.Label(text="")	#空白のラベルを定義
btn = tk.Button(text="押してみよ",command = dispLabel)	
#ボタンを定義して、押された時の処理
otugelbl = tk.Label(text="御告げ")	#御告げラベルを定義する
KO = tk.Label(text="")	#空白のラベルを定義
imageLabel = tk.Label()	#画像表示する場所の定義

disptopimage()	#タイトル画像読み込み

topimage.pack()	#タイトル画像表示
lbl.pack()	#結果表示
btn.pack()	#押して見よ 表示
otugelbl.pack()	#御告げラベル表示
KO.pack()	#空白表示
imageLabel.pack()	#御神籤結果画像
#fdbtn.pack()
tk.mainloop()	

感想

よくわかんないことがあったけど、画像の出し方がわかった。
また、いらないところもあった。
よりよいものを作っていきたいと思う。

参考