###前提・実現したいこと
layout.sizeHint().height()で正しい値を取得したい。
###発生している問題・エラーメッセージ
layout.sizeHint().height()が0となる。
ただし、0.01秒遅らせてから取得すると、70というように正しい数値を取得できる。
###該当のソースコード
python
1import sys 2from PyQt5 import QtCore 3from PyQt5.QtWidgets import * 4import threading 5 6class MyLayout(QVBoxLayout): 7 def __init__(self): 8 super(MyLayout, self).__init__(None) 9 label1 = QLabel() 10 label1.setText('1') 11 label2 = QLabel() 12 label2.setText('2') 13 label3 = QLabel() 14 label3.setText('3') 15 16 self.addWidget(label1) 17 self.addWidget(label2) 18 self.addWidget(label3) 19 20 print(self.sizeHint().height()) # ここでは0 21 threading.Timer(0.01, lambda: print(self.sizeHint().height())).start() # ここでは70 22if __name__ == '__main__': 23 app = QApplication(sys.argv) 24 25 window = QWidget() 26 window.setLayout(MyLayout()) 27 window.show() 28 sys.exit(app.exec_())
###補足情報
Python3.5.1、PyQt3.5.0、Windows10で動作確認
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/12 08:45
2016/06/12 09:31