I am Charmie

メモとログ

Tkinter

tkinter.Tk()
root(メインウィンドウ?)の作成
rootにwidgetを配置していく

tkinter.Tk().mainloop()
メインの処理を実行

geometry
ウィンドウのサイズや位置を設定
まさにgeometry

widgetの配置
widget(オブジェクト)を作成する時は,
1. 作成するwidgetの親widgetをコンストラクタの第1引数に指定
2. pack()によって,widgetをpack方式で配置
例:
window = tkinter.Tk()
lb = tkinter.Label(window, text='my GUI')
lb.pack()
window.mainloop()

widgetの配置 part 2
widgetの配置方式は複数提供されている.
1. pack(): 縦一列もしくは横一列に配置
2. grid(): 2次元格子状に配置
3. place(): widgetの位置や大きさなどを直接指定して配置

widgetのパラメータ
dict型のメンバ変数として保存されている.
この辞書はメンバ関数config()によってアクセス可能.

widgetのパラメータ設定
以下の2つの方法で設定できる
1. コンストラクタでキーワード引数を使って設定
lb = tkinter.Label("text" = "my label")
2. オブジェクト作成後に辞書型オブジェクトのように設定
lb = tkinter.Label()
lb["text"] = "my label"

3. オブジェクト作成後にメンバ関数configを使って複数のパラメータをまとめて設定
btn = tkinter.Button()
btn.config(text = "my label",
command=my_callback)

callback関数の設定
callback関数はWidgetのコンストラクタでキーワード引数のcommandで指定
Button以外のWidgetでも同じ設定方法で良いか不明
例:
def my_callback():
print("You pushed the button!!")

window = tkinter.Tk()
btn = tkinter.Button(window,

text='my Button',
command=my_callback)
btn.pack()
window.mainloop()

widgetをアクティブにする
widgetメンバ関数focus_set()を使うと,そのwidgetが選択された状態になる.

tkinter.Button()
文字通りボタン
ボタン押下時のコールバック関数はキーワード引数commandで指定

tkinter.Entry()
テキストボックス
get()で書き込まれている内容を取得

tkinter.Variable
pythonデータタイプ(bool, int, strとか)をtkinterで扱うために拡張したデータタイプなのかな?それぞれtkinter.BooleanVar, tkinter.IntVar, tkinter.StringVarなどに対応している.
各変数はset(), get()で値の設定,取得が可能.

tkinter.StringVar
tkinter.Variableのサブクラス
今の所必要性が全く分からない
set()関数で設定してある文字列を変更可能
テキストボックスのコマンド引数textvariableにStringVarオブジェクトを指定すると,指定したオブジェクトの文字列の内容を随時反映してくれる

疑問点

  1. tkinter.Buttonのコールバック関数に引数を与える方法 <- すげー複雑.
  2. tkinter.Entryにデフォルトで文字列を与えることができるか

widgetの設定などを含めてclassで処理を書くと良い.コールバック関数からtkinter.Entryの値を参照できる