计算pyqt5中init和event函数之间Widget问题的高度
Caculating height of QWidget issue between init and event function in pyqt5
我只创建了一帧,想计算它的高度。
我可以在构造函数中得到 30(默认值)。
但后来。我可以获得 259(correct value) 。谁能给我解释一下?我想在 init 函数中获得正确的值。
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.frame = QWidget(self)
vbox = QVBoxLayout(self)
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
self.frame.setLayout(vbox)
self.setCentralWidget(self.frame)
print(self.frame.height())
def enterEvent(self,event):
print(self.frame.height())
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
小部件的几何形状仅在必要时通过优化进行更新。在构造函数的情况下,它还不可见,因此不需要更新。
如果你想得到大小,那么你必须在使用 show() 方法之后调用它:
self.setCentralWidget(self.frame)
<b>self.show()</b>
print(self.frame.height())
另一种可能性是使用 returns 小部件根据其内容(QLabel)应具有的默认大小的 sizeHint
self.setCentralWidget(self.frame)
print(<b>self.frame.sizeHint().height()</b>)
我只创建了一帧,想计算它的高度。 我可以在构造函数中得到 30(默认值)。 但后来。我可以获得 259(correct value) 。谁能给我解释一下?我想在 init 函数中获得正确的值。
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.frame = QWidget(self)
vbox = QVBoxLayout(self)
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
vbox.addWidget(QLabel('11111111'))
self.frame.setLayout(vbox)
self.setCentralWidget(self.frame)
print(self.frame.height())
def enterEvent(self,event):
print(self.frame.height())
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
小部件的几何形状仅在必要时通过优化进行更新。在构造函数的情况下,它还不可见,因此不需要更新。
如果你想得到大小,那么你必须在使用 show() 方法之后调用它:
self.setCentralWidget(self.frame)
<b>self.show()</b>
print(self.frame.height())
另一种可能性是使用 returns 小部件根据其内容(QLabel)应具有的默认大小的 sizeHint
self.setCentralWidget(self.frame)
print(<b>self.frame.sizeHint().height()</b>)