私はQtレイアウトとウィジェット管理を検討していましたが、私が説明できない振舞いに出くわしました。自動追加の目的は何ですか?objectName '_layout'を持つQLayout
私は、次のような階層でベースUIを持っています。
MainWindow(QMainWindow) ->
centralwidget (QWidget),
menubar(QMenuBar),
statusbar(QStatusBar)
後には、この文脈では重要ではありません、私はcentralwidgetに、いくつかのレイアウトやウィジェットを追加、しかし、私は信じて。
今、私たちはメインウィンドウの子をチェックすると、オブジェクトとそののObjectNameは、我々は次のように表示されます。
<PyQt5.QtWidgets.QLayout object at 0x00000000089425E8> _layout
<PyQt5.QtWidgets.QWidget object at 0x00000000087C6F78> centralwidget
<PyQt5.QtWidgets.QMenuBar object at 0x0000000008942048> menubar
<PyQt5.QtWidgets.QStatusBar object at 0x00000000089420D8> statusbar
何らかの理由で、QLayoutオブジェクト_layout
が表示されますについて。ただこれが全てではありません。このQLayoutは永続的ではなく、場合によってはサイズ変更などで追加や削除が行われているようです。私は、resizeイベント用eventFilterを追加し、ここでいくつかのウィンドウのサイズが変更後のオブジェクトのアドレスですしている:
<PyQt5.QtWidgets.QLayout object at 0x0000000008942708> _layout
<PyQt5.QtWidgets.QLayout object at 0x00000000089425E8> _layout
<PyQt5.QtWidgets.QLayout object at 0x0000000008942798> _layout
<PyQt5.QtWidgets.QLayout object at 0x00000000089428B8> _layout
レイアウトがあるが、すべての時間は、オブジェクトが新規です。
ここでは何が起こっていますか?このQLayoutの目的は何ですか?なぜこのように動作しますか?
説明ありがとうございます!そしてあなたが正しいのですが、なんらかの理由で、PyQtは同じ基底のC++オブジェクトの周りに新しいラッパーを返します。私はラップされたオブジェクトのアドレスを取得する方法を探し、 '' 'sip.unwrapinstance(obj)' 'を見つけました。これらの異なるPythonラッパーのために同じアドレスを返します。 – wombatonfire