You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.4 KiB

"""
主窗口
"""
from PyQt5.QtWidgets import (
QMainWindow, QWidget, QVBoxLayout, QTabWidget, QStatusBar
)
from PyQt5.QtCore import Qt
from frontend.utils.api_client import APIClient
from frontend.widgets.student_management import StudentManagementWidget
from frontend.widgets.rollcall import RollCallWidget
from frontend.widgets.score_management import ScoreManagementWidget
from frontend.widgets.visualization import VisualizationWidget
class MainWindow(QMainWindow):
"""主窗口类"""
def __init__(self):
super().__init__()
self.api_client = APIClient()
self.init_ui()
def init_ui(self):
"""初始化界面"""
self.setWindowTitle("课堂随机点名系统")
self.setGeometry(100, 100, 1200, 800)
# 创建中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 创建布局
layout = QVBoxLayout()
central_widget.setLayout(layout)
# 创建标签页
self.tabs = QTabWidget()
# 点名页面
self.rollcall_widget = RollCallWidget(self.api_client)
self.tabs.addTab(self.rollcall_widget, "点名")
# 学生管理页面
self.student_widget = StudentManagementWidget(self.api_client)
self.tabs.addTab(self.student_widget, "学生管理")
# 积分管理页面
self.score_widget = ScoreManagementWidget(self.api_client)
self.tabs.addTab(self.score_widget, "积分管理")
# 可视化页面
self.visualization_widget = VisualizationWidget(self.api_client)
self.tabs.addTab(self.visualization_widget, "数据可视化")
layout.addWidget(self.tabs)
# 状态栏
self.statusBar().showMessage("就绪")
# 设置样式
self.setStyleSheet("""
QMainWindow {
background-color: #f5f5f5;
}
QTabWidget::pane {
border: 1px solid #ddd;
background-color: white;
}
QTabBar::tab {
background-color: #e0e0e0;
padding: 8px 20px;
margin-right: 2px;
}
QTabBar::tab:selected {
background-color: white;
border-bottom: 2px solid #4CAF50;
}
""")