No.677
自作のポップアップウィンドウを作っています。
汎用もあるのですが、ちょっと違うなぁ~って思いまして。
ウィンドウを表示するだけなら簡単ですが問題は表示位置です。通常はモニタのセンターに表示されますが、ポップアップウィンドウは親ウィンドウの中央に表示したい。
モニタのサイズ、親ウィンドウの位置やサイズは取得出来ますのでポップアップウィンドウのサイズがわかれば左上の位置は計算で出せますが、
・表示するとプログラムから表示位置の変更が出来ない。
・表示しないとウィンドウのサイズを得られない。
といった制約のためナカナカ難しい。
ならばと閃いたのが、テキトウな位置に表示してサイズを取得してすぐに消し、位置を計算して再表示するというもの。サイズ取得のための表示はタイムアウトを10msecくらいにすれば全く気になりません。
進捗表示などはメインルーチンで進捗の更新しないといけませんが、関数側で表示まで行い、ウィンドウのステータスをメインルーチンに戻して進捗表示を進めます。処理が終わればメインルーチン側で close() を実行です。ウィンドウのステータスをポインタで返しているんですね。
ついでに、親ウィンドウがモニタからハミ出した場合にはフルサイズになるようにもしてみました。
#Python
汎用もあるのですが、ちょっと違うなぁ~って思いまして。
ウィンドウを表示するだけなら簡単ですが問題は表示位置です。通常はモニタのセンターに表示されますが、ポップアップウィンドウは親ウィンドウの中央に表示したい。
モニタのサイズ、親ウィンドウの位置やサイズは取得出来ますのでポップアップウィンドウのサイズがわかれば左上の位置は計算で出せますが、
・表示するとプログラムから表示位置の変更が出来ない。
・表示しないとウィンドウのサイズを得られない。
といった制約のためナカナカ難しい。
ならばと閃いたのが、テキトウな位置に表示してサイズを取得してすぐに消し、位置を計算して再表示するというもの。サイズ取得のための表示はタイムアウトを10msecくらいにすれば全く気になりません。
進捗表示などはメインルーチンで進捗の更新しないといけませんが、関数側で表示まで行い、ウィンドウのステータスをメインルーチンに戻して進捗表示を進めます。処理が終わればメインルーチン側で close() を実行です。ウィンドウのステータスをポインタで返しているんですね。
ついでに、親ウィンドウがモニタからハミ出した場合にはフルサイズになるようにもしてみました。
#Python