from PySide6.QtWidgets import ( QApplication, QWidget, QVBoxLayout, QFormLayout, QLineEdit, QComboBox, QPushButton, QLabel, QSpacerItem, QSizePolicy, ) from PySide6.QtCore import Qt from PySide6.QtGui import QFont from qfluentwidgets import PushButton, ComboBox, LineEdit class RegistrationUI(QWidget): def __init__(self, parent=None): super().__init__(parent) self.init_ui() def init_ui(self): # 窗口基础设置 self.setWindowTitle("用户注册") self.resize(800, 600) # 窗口大小 self.setStyleSheet("background-color: #f0f2f5;") # 浅灰背景 # ========== 注册表单(居中显示) ========== # 表单容器(带白色背景和阴影,增强层次感) form_container = QWidget() form_container.setStyleSheet( """ QWidget { background-color: white; border-radius: 10px; } """ ) form_container.setFixedWidth(466) # 表单固定宽度 # 表单标题 title_label = QLabel("Register") title_label.setFont(QFont("Microsoft YaHei", 18, QFont.Bold)) title_label.setAlignment(Qt.AlignCenter) title_label.setStyleSheet("margin: 20px 0; color: #333;") # 注册控件 self.account_edit = LineEdit() self.account_edit.setPlaceholderText("请输入账号") self.password_edit = LineEdit() self.password_edit.setEchoMode(QLineEdit.Password) self.password_edit.setPlaceholderText("请输入密码") self.confirm_edit = LineEdit() self.confirm_edit.setEchoMode(QLineEdit.Password) self.confirm_edit.setPlaceholderText("请确认密码") # 权限选择(调试人员 + 车间主管) self.permission_combo = ComboBox() self.permission_combo.addItems(["调试人员", "车间主管"]) # 确认按钮(红色样式) self.confirm_btn = PushButton("确认") self.confirm_btn.setCursor(Qt.PointingHandCursor) # 表单布局(QFormLayout 自动对齐标签和输入框) form_layout = QFormLayout() form_layout.addRow("账号:", self.account_edit) form_layout.addRow("密码:", self.password_edit) form_layout.addRow("确认密码:", self.confirm_edit) form_layout.addRow("权限:", self.permission_combo) form_layout.setVerticalSpacing(16) # 行间距 form_layout.setLabelAlignment(Qt.AlignRight | Qt.AlignVCenter) # 标签右对齐 # 表单容器内部布局(垂直排列标题、表单、按钮) container_layout = QVBoxLayout(form_container) container_layout.addWidget(title_label) container_layout.addLayout(form_layout) container_layout.addWidget(self.confirm_btn, alignment=Qt.AlignCenter) container_layout.setContentsMargins(30, 10, 30, 30) # 容器内边距 container_layout.setSpacing(20) # 控件间距 # ========== 主布局(让表单居中显示) ========== main_layout = QVBoxLayout(self) # 顶部和底部添加弹簧,实现垂直居中 main_layout.addItem( QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding) ) main_layout.addWidget(form_container, alignment=Qt.AlignCenter) # 表单水平居中 main_layout.addItem( QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding) ) # 左右留空(可选,控制表单左右边距) main_layout.setContentsMargins(50, 50, 50, 50) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = RegistrationUI() window.show() sys.exit(app.exec())