私は、スクロールされたウィンドウに配置され、ウィンドウ内で自由に移動およびサイズ変更できるウィジェットコンテナー (まだ python 2.7 および gtk2) を開発したいと考えていました。窓; ウィジェットのコーナー/エッジがウィンドウに表示されている場合、サイズ変更用のドラッグ ハンドルが表示されます。それ以外の場合、ウィンドウ領域よりも大きい場合は、中クリックで拡大および縮小 (ズームインおよびズームアウト) されます。
もちろん、このウィジェットのカスタム コーディングの量を最小限に抑えたいので、最初に gtk2 で利用できるものを調べました。サイズ変更ドラッグ ハンドルを公開している唯一の要素は gtk.Window であることが判明しました。それ以外の場合、ウィンドウがウィジェット内に配置されている場合、そのサイズは明らかにウィジェットによって設定されているため、ドラッグ ハンドルはありません (メニュー、タイトルバーなどではありません)。私はこれがなぜなのかをさまよっていました-そして、gtk開発者によって悪と見なされているマルチドキュメントインターフェイス(MDI)が原因のようです。たとえば、Re:[gtk-list] Resizing widgets with a mouseまたはDoes GTK support MDI? - Linux/BSD whirlpool.net.au。
私が望む動作を実証するために、Python PyQt/PySide QMdiArea subwindows scroll not working in TabbedView - Stack Overflowの PyQt4 コードを使用しました。その要点は次のとおりです-コーナーが表示されている場合、サイズ変更ドラッグハンドルが表示され、サイズ変更ドラッグアクションを開始できます。
このようにウィンドウの外側の角をドラッグすると、スクロールバーが自動的に内側のウィジェットの新しいサイズ/位置を示します (以下のスクリーンショットではウィンドウも少し移動していることに注意してください。これは手動で意図的ではありません)。
繰り返しますが、ウィンドウ (タイトルバーやメニューなど) は実際には必要ありません。このように動作するウィジェット コンテナーだけなので、状況に応じてテーブル (TreeView など) や画像を配置できます。 - 少なくとも「外側」のスクロールバーを再計算することについて心配する必要はありません (当然、残りのカスタム動作を自分でコーディングする必要があると思います)。また、今のところ、そのようなウィンドウに配置された単一のウィジェットが必要です (したがって、「複数のドキュメント」はありません)。
Qt はある意味でこれを提供しているように見えますが、私は今のところ、このようなことを行うレベルに到達する可能性はありません。同じことが WxWindows にも当てはまります (たとえば、wxPython-users - ウィジェットのサイズを変更する方法を参照してください- 可能ですが、そこにはコードがないため、ジオメトリ計算コーディングが必要かどうかはわかりません)。
だから私は疑問に思っていました-見逃したかもしれないウィジェットがあり、それは上記の動作を実装し、カスタマイズのベースとして取ることができますか? そうでない場合、gtk2 (最終的には Python) で上記のようなものを実装するために必要なオプションは何ですか?