Files
fluent_widgets_pyside6/test_register.py

106 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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