У меня есть QVBoxLayout
в главном окне, которое центрировано по горизонтали, и в макет я добавил метку с выравниванием AlignCenter
и пользовательским QFrame
. Когда размер метки меньше, чем у пользовательского фрейма (поле Engli sh), все работает как положено:
Однако, когда размер метки больше, чем у пользовательского фрейма, пользовательский фрейм смещен влево:
Почему это происходит и как это исправить?
Вот MCVE:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QFrame, QLabel, QSizePolicy, \
QStackedLayout, QVBoxLayout, QWidget
app = QApplication([])
main_window = QWidget()
main_window.setMinimumSize(1280, 720)
layout = QVBoxLayout()
layout.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
main_window.setLayout(layout)
label = QLabel()
label.setText("Select Language")
label.setAlignment(Qt.AlignCenter)
label.setFont(QFont("Arial", 40))
layout.addWidget(label)
class Button(QFrame):
def __init__(self):
super().__init__()
stacked_layout = QStackedLayout()
button = QWidget()
button_layout = QVBoxLayout()
text = QLabel()
text.setText("English")
text.setAlignment(Qt.AlignCenter)
button_layout.addWidget(text)
button_layout.setAlignment(Qt.AlignCenter)
button.setLayout(button_layout)
stacked_layout.addWidget(button)
self.setLayout(stacked_layout)
self.setFrameStyle(QFrame.Box)
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.setFixedSize(260, 320)
layout.addSpacing(40)
layout.addWidget(Button())
main_window.show()
app.exec_()