From: Hidetoshi NAGAI Date: 2005-12-31T22:19:27+09:00 Subject: [ruby-list:41748] Re: Ruby/Tk でルートウィンドウを最大化する方法? 永井@知能.九工大です. From: Nobuhide Kanagawa Subject: [ruby-list:41739] Ruby/Tk でルートウィンドウを最大化する方法? Date: Sat, 31 Dec 2005 10:23:13 +0900 Message-ID: <20051231102258.9ef14eb8.cxj15527@gmail.com> > 現状、Ruby/Tk でルートウィンドウのサイズを変更する場合、 > 以下のようにサイズを直接指定しています。 (snip) > サイズを直接指定しないで、 > ルートウィンドウをいわゆる[最大化]する方法はありますでしょうか? ウィンドウマネージャからの正確な情報を得る一般的な方法がない以上, 残念ながら「完璧な最大化」の方法はないと思います. 「最大化」にも「ウィンドウマネージャによるフレーム付き」と 「フレームなしでの画面全体」との2種類があるかと思いますが, 前者ならフレームの幅に関するパラメータを別途手で与えねばなりませんし, 後者ならアプリケーションを確実に終了できるようにしておく必要があります. いずれの方法を使うにしても画面サイズは必要ですが,それには Tk.root.winfo_screenwidth Tk.root.winfo_screenheight または Tk.root.winfo_vrootwidth Tk.root.winfo_vrootheight を使うことになるはずです. 後は,この値に基づいて作成した文字列を使って Tk.root.geometry を呼ぶしかないと思います. フレーム等の情報を手で与えた場合の計算は問題ないと思いますので, 念のため,フレームなしの場合についてだけ触れておきます. フレームなしにするためには,ウィンドウをウィンドウマネージャの 管理外にする必要がありますので, Tk.root.overrideredirect(true) を呼ばねばなりません. ただし,すでに表示されているウィンドウに対してこれを実行しても 全く変化はありません. 影響が適用されるのはウィンドウが表示されるときです. したがって,すでに表示されている場合には, 一旦消してから再表示するという作業も必要です. 例えば, Tk.root.withdraw Tk.root.deiconify ということになります. 一気にやれば Tk.root.overrideredirect(true).withdraw.deiconify ですね.(^_^) 逆にウィンドウマネージャの管理下に戻すなら Tk.root.overrideredirect(false).withdraw.deiconify となります. なお,最大化から戻す際には Tk.root.winfo_reqwidth Tk.root.winfo_reqheight の情報も必要かもしれませんね. # というわけで,私の 2005 年の最後のメッセージは終りです.(^_^) # 皆様,良いお年をお迎え下さい. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp