第二話 ボタンを押した時に何か反応させてみる ~戻れない映画のようなポーズボタン
フレ登録、ブクマ、ポイント、ご質問などお気軽にどうぞ。
なおコードの左に全角スペースが2個入っている所が、実行時にエラーになる場合は、Tabに変更して実行してください。
みなさんこんにちは。なろう系タイトルジェネレータ開発の第二話です。
第一話では、Pythonからウインドウを表示させ、そこにテキストやボタンを表示させる所まで、コーディングしました。第二話では、ボタンを押した時に、何か反応させてみることにします。
ボタンは2つあり、ひとつは「自動作成」ボタン、もうひとつは「終了」ボタンですね。順番的には、簡単な方から説明するのがいいんですけど、ここでは左から順に、「自動作成」ボタンから作ってみます。
やり方を、簡単に説明すると、①自動作成ボタンが押された時に、実行される内容を関数として定義する。②その関数を、自動作成ボタンに関連づけてやる。となります。
これをコーディングすると、こうなります。
def display_title():
txt_title["text"]="自動作成ボタンが押されました"
btn_create["command"]=display_title
簡単に説明すると、「def 」というのが関数の定義です。ここで定義している関数の名前は、display_title()になります。その次の行が、この関数で実行される内容です。txt_titleというラベルオブジェクトに、「自動作成ボタンが押されました」と表示するだけの処理ですね。また、その次の行が、「自動作成」ボタンと関数display_title()を紐づけるための設定です。これらの3行を追加することで、「自動作成」ボタンが押されたら、ラベルの文字が「自動作成ボタンが押されました」に切り替わるようになります。
ここで注意しないといけないのは、実行させたい関数の定義は、ボタンと関数の紐づけよりも上に書かれていないといけない点です。上の例でいうと、3行目の「btn_create["command"]=display_title」が、関数の定義「def display_title():」より上にすると、うまく動かなくなります。
では次に、「終了」ボタンが押された時の動作をコーディングします。終了させるには、tkinterモジュールの、destroy()という関数を使います。
def destroy_tk():
tk.destroy()
btn_quit["command"]=destroy_tk
上の2つの変更で、コード全体がどうなったかを最後に示しておきます。
(ここから)
# -*- coding: utf-8 -*-
import tkinter
#ウインドウ設定
tk=tkinter.Tk()
tk.title(u"なろう系タイトルジェネレータ")
tk.minsize(480,200)
#ウインドウ表示
win=tkinter.Canvas(bg="black",width=480,height=200)
win.place(x=0,y=0)
btn_quit = tkinter.Button(tk, text='終了')
btn_quit.place(x=130, y=80)
btn_create = tkinter.Button(tk, text='自動作成')
btn_create.place(x=50, y=80)
txt_title=tkinter.Label(text=u"ここにランダムで作成したタイトルが表示されます。")
txt_title.place(x=0,y=0)
def display_title():
txt_title["text"]="自動作成ボタンが押されました"
btn_create["command"]=display_title
def destroy_tk():
tk.destroy()
btn_quit["command"]=destroy_tk
tk.mainloop()
(ここまで)
今回はここまでです。次回はラベルの文字を、ランダムに切り替える処理を追加する予定です。
では次回またお会いしましょう。




