Я пытаюсь сопоставить размер button1 с button2, проверив размер button1 и затем установив соответствующий размер button2, но size()
для button1 возвращает неправильное значение (640, 480), если только я show()
это первое.Но если я покажу его до того, как закончу настройку макетов, он будет мерцать на экране, а последующий код будет запущен, а я не хочу.
Как мне обойти это?
Вотминимальный пример:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import QSize
import random
class MyButton(QtWidgets.QPushButton):
def __init__(self):
super().__init__("BUTTON1")
def sizeHint(self):
return QSize(100,100)
if __name__=='__main__':
app = QtWidgets.QApplication(sys.argv)
# Button with sizeHint 100x100
btn1 = MyButton()
# There is a chance this button will be sized differently than its sizeHint wants
if random.randint(0, 1):
btn1.setFixedHeight(200)
# This line works if btn1.setFixedHeight was called, but otherwise gives the wrong height of 480px
height = btn1.size().height()
# I want btn2 to be the same height as btn1
btn2 = QtWidgets.QPushButton("BUTTON2")
btn2.setFixedHeight(height)
# Boilerplate
layout = QtWidgets.QHBoxLayout()
layout.addWidget(btn1)
layout.addWidget(btn2)
container = QtWidgets.QWidget()
container.setLayout(layout)
container.show()
sys.exit(app.exec_())