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
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;
|
|
}
|
|
""")
|
|
|