このページでは、Tkinter における config
メソッド(configure
メソッド)について解説していきます。
Contents
config
メソッド
では、config
メソッドについて解説していきたいと思います!
config
メソッドとは
config
メソッドとは、実行したウィジェット(ウィジェットのクラスのインスタンス)の設定を変更するメソッドとなります。例えば、config
メソッドを利用することで、ウィジェットの背景色を変更したり、ウィジェットを無効状態に変更したりすることが可能です。
このメソッドは、全種類のウィジェットから実行可能なメソッドとなります。同様に、実行したウィジェットの設定を変更するメソッドに configure
メソッドが存在しますが、この configure
メソッドと config
メソッドとは同じメソッドとなります。なので、どちらを使用しても問題ありません。
また、この config
メソッドの特徴は既に作成済みのウィジェットの設定の変更が可能であるという点になります。
ウィジェットの設定は、ウィジェット作成時、すなわちウィジェットのクラスのコンストラクタ実行時にキーワード引数を指定して変更することも可能です。ただし、ウィジェットの設定の変更がウィジェット作成後に必要になる場合も多く、そのような場合には、作成済みのウィジェットに config
メソッドを実行させて設定の変更を行うことになります。
作成済みのウィジェットの設定が変更可能であるため、config
メソッドを利用することで、「ボタンウィジェットがクリックされた」「マウスがクリックされた」「時間が経過した」などのイベント発生時にウィジェットの設定を変更させるようなことも可能となります。
スポンサーリンク
config
メソッドの使い方
続いて、config
メソッドの使い方について解説していきます。
config
メソッドの実行の仕方
基本的には、他のメソッド同様に、ウィジェットを生成し、そのウィジェットに config
メソッドを実行させればよいだけです。もう少し具体的に言うと、Tkinter には各種ウィジェット用のクラスが定義されていますので、そのクラスのコンストラクタを実行してウィジェットを生成し、そのインスタンスに必要なタイミングで config
メソッドを実行させればよいです。
# widget:各種ウィジェットクラスのインスタンス
widget.config(引数)
また、config
メソッドの返却値はなし(None
)となります。
config
メソッドに指定可能な引数
config
メソッド実行時にポイントになるのが引数になります。この config
メソッドはキーワード引数を指定して実行することになります。config
メソッドには、同時に複数のキーワード引数を指定することが可能です。
基本的には、この config
メソッドに指定可能なキーワード引数は、そのウィジェットのコンストラクタに指定可能なキーワード引数と同じになります。ただし、このウィジェットのコンストラクタに指定可能なキーワード引数はウィジェットの種類によって異なります。
なので、具体的に config
メソッドに指定可能なキーワード引数は一言で説明することはできません…。ただ、下記ページのリンク先に、各種ウィジェットの解説ページを設置しており、さらにそれらのページでウィジェットのコンストラクタに指定可能なキーワード引数をまとめています。ですので、利用したいウィジェットのページを読んでいただければ、どんなキーワード引数が指定可能で、そのキーワード引数によって、どんなウィジェットの設定を行うことができるのかについて確認していただくことが可能です。
config
メソッドに指定可能な引数の調べ方
また、ウィジェットに keys
メソッドを実行させることで、そのウィジェットで config
メソッドに指定可能なキーワード引数一覧のリストを返却値として得ることができます。なので、とにかく config
メソッドに指定可能なキーワード引数を調べたいのであれば、下記のように keys
メソッドの返却値を print
で出力してやれば良いです。
# widget:各種ウィジェットクラスのインスタンス
print(widget.keys())
他にも、例えば Visual Studio Code 等で開発を行っているのであれば、config
メソッドの実行処理を記述するとインテリセンス機能が働いて指定可能なキーワード引数を提示してくれたりもします。
こんな感じで、config
メソッドに指定可能なキーワード引数については様々な方法で調べることが可能です。
config
メソッドによる設定変更が反映されるタイミング
ここまで説明してきたように、ウィジェットに config
メソッドを実行させることで、そのウィジェットの設定を変更することが可能です。
ただし、特に見た目に関する設定の変更に関しては、config
メソッドの実行だけではウィジェットに反映されないので注意してください。config
メソッドでは、基本的には設定の変更の登録のみを行うと考えてください。そして、登録された設定変更を実際にウィジェットへ反映するのは mainloop
となります。したがって、ウィジェットに設定の変更が反映されるのは、config
メソッドを実行した後に mainloop
に戻ったタイミングとなります。なので、config
メソッドを実行したのに mainloop
に戻らなければ設定の変更がウィジェットに反映されないことになります。
例えば、イベントハンドラ内で config
メソッドによって変更したウィジェットの設定は、そのイベントハンドラが終了したタイミングで反映されることになります。イベントハンドラは mainloop
から実行されることになり、イベントハンドラ終了後に再び mainloop
に戻るようになっています。なので、イベントハンドラで実施された設定変更は、そのイベントハンドラが終了して mainloop
に戻ったタイミングで反映されることになります。
この mainloop
に関しては、下記ページで詳しくまとめていますので、詳細に関しては下記ページを参照していただければと思います。とにかく Tkinter を上手く使いこなすためには mainloop
の理解が不可欠となりますので、mainloop
についての理解が不十分な方は、この機会に下記ページも読んでみていただければと思います。
ただ、イベントハンドラで長い時間の sleep
等の待ちを行ったり、極端に処理の重いループを実行しなければ、基本的には config
メソッドの設定の変更がウィジェットに反映されないようなことは起きないと思いますので安心してください。設定変更の反映が行われなかったり、反映が遅いような場合は、上記の内容について思い出していただければと思います。
また、どうしても config
メソッドの実行後に、すぐに mainloop
に戻すことができないような場合には update
メソッドを利用するという手もあります。update
メソッドに関しては下記で解説していますので、興味があれば読んでみてください。
(参考) config
メソッド以外でのウィジェットの設定変更
また、ここまでウィジェットの設定変更を config
メソッドを利用して実施することを前提に解説を進めてきましたが、実は config
メソッドを利用しなくても、下記を実行してウィジェットの設定変更を行うことも可能です。
# widget:各種ウィジェットクラスのインスタンス
widget['キーワード引数名'] = 設定値
上記における キーワード引数名
には、 config
メソッドに指定可能なキーワード引数の引数名と同じものを指定することができます。なので、メソッドを利用しなくても、上記のように代入処理により config
メソッドと同等のウィジェットの設定変更を行うことが可能です。
ただ、config メソッドに指定可能な引数の調べ方 でも説明したように、多くの開発環境ではメソッドの実行処理を記述するとインテリセンス機能によってメソッドに指定可能な引数を提示してくれるようになっています。なので、特に慣れない間は、指定可能な引数が分かりやすい、config
メソッドでの設定変更をオススメします。
スポンサーリンク
config
メソッドの使用例
最後に、config
メソッドの使用例を紹介します。今回は、ボタンクリック時にキャンバスウィジェットの背景色を変化させるアプリで config
メソッドの使用例を示したいと思います。
スクリプト
それが下記のスクリプトになります。
import tkinter
def red():
# キャンバスの背景色の設定を変更
canvas.config(background='red')
# クリックされたボタンを無効化・それ以外のボタンを通常化
red_button.config(state=tkinter.DISABLED)
green_button.config(state=tkinter.NORMAL)
blue_button.config(state=tkinter.NORMAL)
def green():
# キャンバスの背景色の設定を変更
canvas.config(background='green')
# クリックされたボタンを無効化・それ以外のボタンを通常化
red_button.config(state=tkinter.NORMAL)
green_button.config(state=tkinter.DISABLED)
blue_button.config(state=tkinter.NORMAL)
def blue():
# キャンバスの背景色の設定を変更
canvas.config(background='blue')
# クリックされたボタンを無効化・それ以外のボタンを通常化
red_button.config(state=tkinter.NORMAL)
green_button.config(state=tkinter.NORMAL)
blue_button.config(state=tkinter.DISABLED)
app = tkinter.Tk()
canvas = tkinter.Canvas(
app,
width=200,
height=200,
background='gray'
)
canvas.grid(columnspan=3, column=0, row=0, padx=10, pady=10)
red_button = tkinter.Button(
app,
text='赤',
font=('', 20),
command=red
)
red_button.grid(column=0, row=1, padx=10, pady=10)
green_button = tkinter.Button(
app,
text='緑',
font=('', 20),
command=green
)
green_button.grid(column=1, row=1, padx=10, pady=10)
blue_button = tkinter.Button(
app,
text='青',
font=('', 20),
command=blue
)
blue_button.grid(column=2, row=1, padx=10, pady=10)
app.mainloop()
スクリプトの説明
上記スクリプトを実行することで起動するアプリにおいては、config
メソッドを利用して2つのことを実現しています。
1つ目がキャンバスウィジェットの背景色の変更です。
このアプリでは 赤
ボタン・緑
ボタン・青
ボタンの3つのボタンウィジェットを作成しており、これらのボタンウィジェットがクリックされた際には、それぞれ red
・green
・blue
関数が実行されるようになっています。
そして、これらの関数の最初に実行しているのが下記となります(色名
はクリックされたボタンによって異なります)。
canvas.config(background='色名')
canvas
はキャンバスウィジェットであり、さらに background
はウィジェットの背景色を変更するキーワード引数となります。そのため、各種ボタンがクリックされた際には、キャンバスウィジェットの背景色が変化することになります。
2つ目がボタンウィジェットの状態の変更です。
前述の各種ボタンウィジェットがクリックされた時に実行される red
・green
・blue
関数においては、先ほど説明したキャンバスの背景色の変更の次に下記のような処理を実行しています(下記は red
関数の例になります)。
red_button.config(state=tkinter.DISABLED)
green_button.config(state=tkinter.NORMAL)
blue_button.config(state=tkinter.NORMAL)
上記は、クリックされたボタンウィジェットを無効化し、それ以外のボタンウィジェットを有効化するための処理となります。state
がウィジェットの状態を設定するキーワード引数で、値に tkinter.NORMAL
を指定すれば、そのウィジェットが通常状態となり、値に tkinter.DISABLED
を指定すれば、そのウィジェットが無効状態となります。無効状態になったボタンウィジェットはクリック不可となるため、これにより、前回クリックされたボタンウィジェットをクリックできないようにしています。
スポンサーリンク
スクリプトの動作確認
最後にスクリプトの動作確認を行っておきましょう!
まず、先ほど示したスクリプトを実行すれば下記のようなアプリが起動すると思います。
赤
ボタン・緑
ボタン・青
ボタンをそれぞれクリックすれば、クリックしたボタンに応じてキャンバスの背景色が変化することが確認できると思います。また、直前にクリックしたボタンは無効化されてクリックできないようになっていることも確認できると思います。違うボタンをクリックすれば、無効化が解除されて再度クリックできるようになることも確認できると思います。
こういった設定変更は全て config
メソッドで実施しており、これらの動作から config
メソッドの役割や、config
メソッドを利用することで実現可能なことを感じ取っていただけるのではないかと思います。
今回はボタンクリックの例を示しましたが、config
メソッドと下記のページで紹介している after
メソッドとを併用すれば、定期的なタイミングでウィジェットの設定変更を行うこともできます。
また、config
メソッドと下記ページで紹介している bind
メソッドとを併用すれば、マウスクリックやキーボードのキー押下等のイベントが発生したタイミングでウィジェットの設定の変更を行うことも可能です。
状況に応じて適時ウィジェットの設定の変更が必要になる場面も多く、そういった場面では config
メソッドが活躍しますので、是非 config
メソッドについては覚えておきましょう!
まとめ
このページでは、Tkinter における config
メソッドについて解説しました!
config
は、ウィジェットの設定変更を行うメソッドとなります。ウィジェットの作成時、すなわちウィジェットのクラスのコンストラクタ実行時にも、キーワード引数を指定してウィジェットの設定変更を行うことは可能ですが、既に作成済みのウィジェットの設定を変更する場合は、今回紹介した config
メソッドの実行が必要となります。
この config
メソッドに指定可能な引数はウィジェットによって異なりますので、詳細に関しては下記ページに設定しているリンク先から調べてみていただければと思います。
Tkinter でアプリを開発するのであれば、この config
メソッドを利用する機会も多いと思いますので、是非 config
メソッドの役割や使い方は覚えておいてください!