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_())
页面展示:

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号