Files
fluent_widgets_pyside6/test_register.py

106 lines
3.7 KiB
Python
Raw Normal View History

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())