2025.2.23

今天进行外包杯的原型制作,题目挺难的,前端交互页面也不知道要放些什么,就先用pyqt画一个简单的页面吧

代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QProgressBar, QTextBrowser, QTableWidget, QTableWidgetItem, QLineEdit, QComboBox, QCheckBox

class PingPongAnalysisSystem(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置窗口标题和大小
        self.setWindowTitle("智能乒乓球运动分析与可视化系统")
        self.resize(1200, 800)
        self.setStyleSheet("""
            QWidget {
                background-color: #f0f0f0;
                font-family: Arial, sans-serif;
            }
            QLabel {
                font-size: 14px;
                color: #333;
            }
            QPushButton {
                background-color: #4CAF50;
                color: white;
                padding: 8px 16px;
                border: none;
                border-radius: 4px;
                margin: 4px;
            }
            QPushButton:hover {
                background-color: #45a049;
            }
            QProgressBar {
                text-align: center;
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            QTextBrowser {
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            QTableWidget {
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            QLineEdit {
                border: 1px solid #ddd;
                border-radius: 4px;
                padding: 4px;
            }
            QComboBox {
                border: 1px solid #ddd;
                border-radius: 4px;
                padding: 4px;
            }
        """)

        # 创建中心窗口部件和布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        main_layout = QHBoxLayout(central_widget)

        # 数据展示区
        data_display_widget = QWidget()
        data_display_layout = QVBoxLayout(data_display_widget)
        data_display_label = QLabel("数据展示区")
        data_display_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        data_table = QTableWidget(10, 5)
        data_table.setHorizontalHeaderLabels(["时间", "位置", "动作", "轨迹", "其他"])
        data_display_layout.addWidget(data_display_label)
        data_display_layout.addWidget(data_table)

        # 实时分析数据区
        real_time_analysis_widget = QWidget()
        real_time_analysis_layout = QVBoxLayout(real_time_analysis_widget)
        real_time_label = QLabel("实时分析数据区")
        real_time_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        progress_bar = QProgressBar()
        progress_bar.setValue(80)
        current_state_label = QLabel("当前状态:正常")
        real_time_browser = QTextBrowser()
        real_time_browser.append("实时分析数据会在这里更新...")
        real_time_analysis_layout.addWidget(real_time_label)
        real_time_analysis_layout.addWidget(progress_bar)
        real_time_analysis_layout.addWidget(current_state_label)
        real_time_analysis_layout.addWidget(real_time_browser)

        # 动作可视化分析区
        visual_analysis_widget = QWidget()
        visual_analysis_layout = QVBoxLayout(visual_analysis_widget)
        visual_label = QLabel("动作可视化分析区")
        visual_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        motion_graph = QLabel("运动轨迹可视化图")
        motion_graph.setStyleSheet("background-color: white; border: 1px solid #ddd; border-radius: 4px; padding: 16px;")
        punch_accuracy = QLabel("击球准确度分析")
        punch_accuracy.setStyleSheet("background-color: white; border: 1px solid #ddd; border-radius: 4px; padding: 16px;")
        visual_analysis_layout.addWidget(visual_label)
        visual_analysis_layout.addWidget(motion_graph)
        visual_analysis_layout.addWidget(punch_accuracy)

        # 系统设置区
        system_settings_widget = QWidget()
        system_settings_layout = QVBoxLayout(system_settings_widget)
        settings_label = QLabel("系统设置区")
        settings_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        model_combo = QComboBox()
        model_combo.addItem("模型1")
        model_combo.addItem("模型2")
        threshold_input = QLineEdit()
        threshold_input.setPlaceholderText("设置阈值")
        update_button = QPushButton("更新设置")
        system_settings_layout.addWidget(settings_label)
        system_settings_layout.addWidget(QLabel("选择模型:"))
        system_settings_layout.addWidget(model_combo)
        system_settings_layout.addWidget(QLabel("设置阈值:"))
        system_settings_layout.addWidget(threshold_input)
        system_settings_layout.addWidget(update_button)

        # 用户管理区
        user_management_widget = QWidget()
        user_management_layout = QVBoxLayout(user_management_widget)
        user_label = QLabel("用户管理区")
        user_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        user_name_input = QLineEdit()
        user_name_input.setPlaceholderText("输入用户名")
        add_user_button = QPushButton("添加用户")
        delete_user_button = QPushButton("删除用户")
        user_list = QTextBrowser()
        user_list.append("用户列表会在这里显示...")
        user_management_layout.addWidget(user_label)
        user_management_layout.addWidget(user_name_input)
        user_management_layout.addWidget(add_user_button)
        user_management_layout.addWidget(delete_user_button)
        user_management_layout.addWidget(user_list)

        # 报告生成与展示区
        report_widget = QWidget()
        report_layout = QVBoxLayout(report_widget)
        report_label = QLabel("报告生成与展示区")
        report_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        generate_report_button = QPushButton("生成报告")
        report_browser = QTextBrowser()
        report_browser.append("报告内容会在这里显示...")
        report_layout.addWidget(report_label)
        report_layout.addWidget(generate_report_button)
        report_layout.addWidget(report_browser)

        # 将各区域添加到主布局中
        main_layout.addWidget(data_display_widget)
        main_layout.addWidget(real_time_analysis_widget)
        main_layout.addWidget(visual_analysis_widget)
        main_layout.addWidget(system_settings_widget)
        main_layout.addWidget(user_management_widget)
        main_layout.addWidget(report_widget)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = PingPongAnalysisSystem()
    window.show()
    sys.exit(app.exec_())

页面展示:

 

posted @ 2025-02-23 22:55  贾贾鱼  阅读(8)  评论(0)    收藏  举报