106 lines
3.7 KiB
Python
106 lines
3.7 KiB
Python
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())
|