from common import * from PySide6.QtWidgets import ( QApplication, QWidget, QFormLayout, QHBoxLayout, QVBoxLayout, QLineEdit, QComboBox, QPushButton, QLabel, QFileDialog, QMessageBox, ) from PySide6.QtCore import Qt from PySide6.QtGui import QFont from qfluentwidgets import PushButton, ComboBox, LineEdit, PrimaryPushButton # 模具管理界面 class MoldManagementUI(QWidget): def __init__(self, parent=None): super().__init__(parent) # 初始化字体(用于左侧标签和控件) self.left_font = QFont() self.left_font.setPointSize(16) # 左侧标签字体大小 self.setWindowTitle("模具管理界面") self.resize(1066, 630) # 窗口大小 self.__initWidget() def __initWidget(self): # 创建控件 self.__createWidgets() # 设置样式 self.__initStyles() # 布局 self.__initLayout() # 绑定事件 self.__bind() def __createWidgets(self): # ========== 创建控件 ========== # 左侧表单控件 self.serial_edit = LineEdit() self.serial_edit.setPlaceholderText("模具序列号") self.serial_edit.setFont(self.left_font) # 输入框字体 self.type_combo = ComboBox() self.type_combo.addItems(["一板一个", "一板两个", "一板三个", "一板四个"]) self.type_combo.setFont(self.left_font) # 下拉框字体 # 左侧按钮(上传点位等) self.btn_upload_model = PrimaryPushButton("从文件上传") self.btn_suction_point = PrimaryPushButton("上传点位") self.btn_place_point = PrimaryPushButton("上传点位") self.btn_pick_point = PrimaryPushButton("上传点位") self.btn_high_freq = PrimaryPushButton("上传点位") # 右侧操作按钮 self.btn_upload_mold = PrimaryPushButton("上传模具") self.btn_modify_mold = PrimaryPushButton("修改模具") self.btn_delete_mold = PrimaryPushButton("删除模具") self.btn_batch_upload = PrimaryPushButton("通过文件上传") # 需要文件对话框 def __initStyles(self): # ========== 设置样式 ========== # 1. 左侧按钮样式(适中大小) for btn in [ self.btn_upload_model, self.btn_suction_point, self.btn_place_point, self.btn_pick_point, self.btn_high_freq, ]: btn.setFixedHeight(46) # 2. 右侧按钮样式(较大尺寸) for btn in [ self.btn_upload_mold, self.btn_modify_mold, self.btn_delete_mold, self.btn_batch_upload, ]: btn.setFixedHeight(99) def __initLayout(self): # ========== 布局设计 ========= # 左侧表单布局(创建标签并设置字体) form_layout = QFormLayout() form_layout.setSpacing(20) # 行间距 form_layout.setRowWrapPolicy(QFormLayout.DontWrapRows) # 添加表单行(左侧标签+控件) label_config = [ ("模具序列号:", self.serial_edit), ("模具类型:", self.type_combo), ("模具三维模型:", self.btn_upload_model), ("吸取点位设置:", self.btn_suction_point), ("放置点位设置:", self.btn_place_point), ("取料点位设置:", self.btn_pick_point), ("高周波放料点位设置:", self.btn_high_freq), ] for text, widget in label_config: label = QLabel(text) label.setFont(self.left_font) form_layout.addRow(label, widget) # 右侧垂直布局(按钮更大,保持居中) right_layout = QVBoxLayout() right_layout.addWidget(self.btn_upload_mold) right_layout.addWidget(self.btn_modify_mold) right_layout.addWidget(self.btn_delete_mold) right_layout.addWidget(self.btn_batch_upload) right_layout.setAlignment(Qt.AlignCenter) right_layout.setSpacing(66) # 右侧按钮间距 # 主布局(左侧2/3,右侧1/3) main_layout = QHBoxLayout() main_layout.addLayout(form_layout) main_layout.addLayout(right_layout) main_layout.setContentsMargins(50, 50, 50, 50) main_layout.setSpacing(66) main_layout.setStretchFactor(form_layout, 2) main_layout.setStretchFactor(right_layout, 1) self.setLayout(main_layout) def __bind(self): # ========== 绑定事件 ========== self.btn_batch_upload.clicked.connect(self.onFileUpload) # 文件上传 self.btn_upload_model.clicked.connect(self.on3DModelUpload) # 三维模型上传 # 文件上传 (暂时不知道是上传什么文件,待定) def onFileUpload(self): """打开文件对话框""" # 打开文件选择框 file_paths, _ = QFileDialog.getOpenFileNames( self, "选择上传文件", "", "所有文件 (*)" ) if file_paths: # 显示选中的文件数量(实际应用中可替换为上传逻辑) QMessageBox.information(self, "文件选择完成", f"准备上传!") # 这里可以添加文件上传的业务逻辑 print("选中的文件路径:", file_paths) # 三维模型上传 def on3DModelUpload(self): """打开三维模型文件对话框""" # 只允许选择三维模型相关格式 file_path, _ = QFileDialog.getOpenFileName( self, "选择三维模型文件", "", "模型文件 (*.stl *.obj *.step);;所有文件 (*)" ) if file_path: QMessageBox.information( self, "模型选择完成", f"已选择模型文件:\n{file_path}" ) # 这里可以添加模型上传的业务逻辑 print("选中的模型路径:", file_path) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = MoldManagementUI() window.show() sys.exit(app.exec())