PyGTKのウィジェットのサイズ

gtk.Button生成してgtk.Layout上にPut()した直後、gtk.Buttonのサイズを取得しようとすると、正しいサイズが取得できないという問題にぶつかってしまいました。

gtk.Buttonのサイズと書きましたが、正確にはEventBoxの上に乗っかっているgtk.Buttonです。

EventBoxのwindowにget_size()メソッドを使ってサイズを取得してみると、幅も高さも「1」でした。。
でもLayout上にはちゃんと表示されています。。

まだきちんと整理できていないのですが、ウィジェットが生成されて配置されたあと、ウィジェットのウインドウのサイズなどが設定されるまでタイムラグのようなものがあるらしいことがわかりました。

では、いつウインドウのサイズなどの情報が設定されたかを知るには。。。ですが、

widget.connect('size-allocate', self.on_item_size_located)

とすることで、サイズの設定が完了したタイミングで処理を実行させることができるようです。

実際にsize-allocateシグナルのコールバック関数中でウィジェットのサイズを出力するようにprint文を仕込んでおいたところ、ちゃんとした値が表示されました。

ううむ。。。奥が深いです。