このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。
1.13 スクリーン中央への配置(2)(eval、tk.call、tk::PlaceWindow)
tkinterにウィンドウを中央に配置するメソッドはありませんが、そのベースとなっている tk/tcl には「tk::PlaceWindow」というコマンドがあります。このコマンドを直接 tcl スクリプトで実行するとウィンドウを中央に配置することができます。ただ、このコマンドは、x 座標のオフセットやタイトルバーの高さは考慮されていません。
tcl スクリプトを実行するには、tkinter の組み込み関数の「eval」または「tk.call」を用います。
object.eval(tcl_script)
tcl コマンドスクリプトを実行します。
引数
この関数は 「Tk」クラスに実装されています。メインウィンドウのオブジェクトから呼び出して使用します。
引数
tcl_script
備考 実行する tcl コマンドスクリプトを文字列で指定します。
この関数は 「Tk」クラスに実装されています。メインウィンドウのオブジェクトから呼び出して使用します。
object.tk.call(tcl_command, ...)
tcl コマンドスクリプトを実行します。
引数
この関数は 「tkinter」の各クラスに実装されています。メインウィンドウに限らず、ウィジェットのオブジェクトから呼び出して使用できます。
引数
tcl_command, ...
備考 実行する tcl コマンドスクリプトを、コマンドとオプションをそれぞれ文字列で記述して「,」で区切って指定します。
この関数は 「tkinter」の各クラスに実装されています。メインウィンドウに限らず、ウィジェットのオブジェクトから呼び出して使用できます。
tcl コマンドの「tk::PlaceWindow」は最新のマニュアルには載っていません。また、tcl コマンドについては本書の範疇を越えているので、他のドキュメントを参照して下さい。
次のプログラムは「eval」関数を用いて tcl コマンドでメインウィンドウをスクリーンの中央に配置しています。また、「tk.call」を用いた場合をコメントとして記述しています。
import tkinter as tk | |
root = tk.Tk() | |
root.wm_geometry('300x200') | |
root.eval('tk::PlaceWindow . center') | |
#root.tk.call('tk::PlaceWindow', '.', 'center') | |
root.mainloop() |