Qt (バインディングを取得するために Python の Pyside) を使用しており、ウィジェットのフレーム ジオメトリを取得しようとしています。起動時にウィジェットのフレーム ジオメトリを取得し、ウィジェットに要素を描画しようとすると、次のように返されます。
PySide.QtCore.QSize(639, 479)
ただし、これは正しくないフレーム ジオメトリです。ウィジェットのいくつかの要素を再描画すると、次のようになります。
PySide.QtCore.QSize(1044, 571)
2 番目の出力は、最初の出力ではなく、正しいフレーム ジオメトリです。この記事によると: http://doc.qt.io/qt-4.8/application-windows.html、それは述べています:
X11 では、ウィンドウ マネージャーがウィンドウを装飾するまで、ウィンドウにはフレームがありません。これは、QWidget::show() を呼び出してウィンドウが最初にペイント イベントを受け取った後、ある時点で非同期に発生するか、まったく発生しません。X11 にはポリシーがないことに注意してください (柔軟性があると言う人もいます)。したがって、ウィンドウが取得する装飾フレームについて安全な仮定を立てることはできません。基本的なルール: あなたの仮定を破るウィンドウ マネージャーを使用し、あなたに文句を言うユーザーが常に 1 人はいます。
ウィンドウがまだ装飾されていないため、正しいフレーム情報を取得していないと思います。この問題の回避策はありますか?