【发布时间】:2020-04-06 17:04:54
【问题描述】:
我在水平居中的主窗口上有一个QVBoxLayout,在布局中我添加了一个具有AlignCenter 对齐和自定义QFrame 的标签。当标签的大小小于自定义框架(英文框)时,一切都按预期工作:
但是,当标签的大小大于自定义框架时,自定义框架会向左移动:
为什么会发生这种情况,我该如何解决?
这是一个 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_()
【问题讨论】:
标签: python python-3.x user-interface pyqt pyqt5