パスワードを忘れた? アカウント作成
10566476 journal
Python

tamanegiの日記: wxPython: FlexGridSizer続き

日記 by tamanegi

一応EVT_SIZEに対応できるようになった。…が、何か間違ってる気がする。
一応備忘録として疑似コードとコメントを残しておくことにする。
ちなXRC使ってることは前提。

# FlexGridSizer の親 Window の EVT_SIZE のハンドラ
def OnResize( self, event = None ):
  obj = xrc.XRCCTRL( self.mainframe, "obj" )
  objsize = obj.GetSize()
 
  # GetSize() をするだけだと border の幅とかわからんのでSizerItem のサイズも
  sizer = obj.GetContainingSizer()
  sizeritem = sizer.GetItem( obj )
  objsize_wb = sizeritem.GetSize()
 
  # border size; 他に良い方法はないのだろうか
  border = objsize_wb - objsize
 
  # 現在のウインドウサイズ; MenuBar とかの領域を考慮するため GetClientSize
  window_size = self.mainframe.GetClientSize()
 
  # sizeritem のサイズ設定(ここが極めて微妙。なぜ border を考慮する必要あるのか)
  # border 幅が複数あるだけでも破綻しそう
  # ちなこれを変えずに Layout しても無駄っぽい
  objsize_wb_new = window_size - border
  sizeritem.SetMinSize( objsize_wb_new )
 
  # obj のサイズ設定; これは多分普通…?
  objsize_new = window_size - border
  obj.SetSize( objsize_new )
 
  # update layout
  sizer.Layout()

段々わかるようになってきた気がしないでもないけど、
逆に益々わからなくなってきたような気もしないでもない。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...