diff --git a/UI/VarManages/SwitchVarModelWidget.py b/UI/VarManages/SwitchVarModelWidget.py new file mode 100644 index 0000000..302673f --- /dev/null +++ b/UI/VarManages/SwitchVarModelWidget.py @@ -0,0 +1,207 @@ +from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QLabel, QComboBox, QPushButton +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QFont + + +class SwitchVarModelDialog(QDialog): + """变量值类型选择对话框""" + + def __init__(self, parent=None): + super().__init__(parent) + self.setWindowTitle('选择变量值类型') + self.setFixedSize(380, 300) # 增加高度避免遮挡,并保持与用户最新修改一致 + self.setModal(True) + self.selectedType = None + + # 设置窗口样式 + self.setWindowFlags(Qt.Dialog | Qt.WindowCloseButtonHint) + + # 应用样式 + self.setStyleSheet(self.getStyleSheet()) + + self.setupUI() + + def setupUI(self): + """设置界面""" + # 创建主布局 + mainLayout = QVBoxLayout() + mainLayout.setSpacing(20) + mainLayout.setContentsMargins(30, 30, 30, 30) + + # 标题标签 + titleLabel = QLabel('选择变量值类型') + titleLabel.setObjectName('titleLabel') # 用于样式表 + mainLayout.addWidget(titleLabel) + + # 说明标签 + infoLabel = QLabel('请选择您要将变量切换到的值类型:') + infoLabel.setObjectName('infoLabel') # 用于样式表 + mainLayout.addWidget(infoLabel) + + # 创建combobox + self.comboBox = QComboBox() + self.comboBox.setObjectName('valueTypeComboBox') # 用于样式表 + self.comboBox.addItems(['本地值', '远程值', '模拟值']) + self.comboBox.setCurrentText('本地值') # 默认选择本地值 + mainLayout.addWidget(self.comboBox) + + # 添加更多弹性空间,确保按钮不会遮挡下拉框 + mainLayout.addStretch(2) + + # 创建按钮布局 + buttonLayout = QHBoxLayout() + buttonLayout.setSpacing(15) + + # 确定按钮 + okButton = QPushButton('确定') + okButton.setObjectName('okButton') # 用于样式表 + okButton.clicked.connect(self.accept) + buttonLayout.addWidget(okButton) + + # 取消按钮 + cancelButton = QPushButton('取消') + cancelButton.setObjectName('cancelButton') # 用于样式表 + cancelButton.clicked.connect(self.reject) + buttonLayout.addWidget(cancelButton) + + mainLayout.addLayout(buttonLayout) + self.setLayout(mainLayout) + + def getSelectedType(self): + """获取选择的类型""" + return self.comboBox.currentText() + + def getStyleSheet(self): + """返回对话框的样式表""" + return """ + QDialog { + background-color: #F8F9FA; + border-radius: 12px; + border: 1px solid #E5E7EB; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + } + + QLabel#titleLabel { + font-size: 18px; + font-weight: 600; + color: #1F2937; + margin-bottom: 10px; + } + + QLabel#infoLabel { + font-size: 14px; + color: #6B7280; + margin-bottom: 15px; + } + + QComboBox#valueTypeComboBox { + border: 1px solid #D1D5DB; + border-radius: 8px; + padding: 8px 12px; + font-size: 14px; + color: #374151; + background-color: #FFFFFF; + min-height: 36px; + } + + QComboBox#valueTypeComboBox:hover { + border-color: #9CA3AF; + } + + QComboBox#valueTypeComboBox:focus { + border-color: #2277EF; + outline: none; + } + + QComboBox#valueTypeComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 25px; + border-left-width: 1px; + border-left-color: #D1D5DB; + border-left-style: solid; + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; + } + + QComboBox#valueTypeComboBox::down-arrow { + image: url(./Static/down_arrow.png); /* 假设有一个向下箭头图标 */ + width: 16px; + height: 16px; + } + + QComboBox#valueTypeComboBox QAbstractItemView { + border: 1px solid #E5E7EB; + border-radius: 8px; + background-color: #FFFFFF; + selection-background-color: #EBF8FF; + selection-color: #1D4ED8; + outline: none; + padding: 5px; + } + + QComboBox#valueTypeComboBox QAbstractItemView::item { + min-height: 32px; + padding: 5px 10px; + border-radius: 6px; + } + + QComboBox#valueTypeComboBox QAbstractItemView::item:hover { + background-color: #F3F4F6; + } + + /* 使用项目之前的按钮样式 */ + QPushButton { + border: none; + outline: none; + font-family: "PingFangSC-Medium", "Microsoft YaHei", sans-serif; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + border-radius: 6px; + min-width: 80px; + min-height: 32px; + } + + /* 确定按钮样式 - 使用项目蓝色主题 */ + QPushButton#okButton { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #2277EF, + stop:1 #1976D2); + color: #FFFFFF; + border: 1px solid #1976D2; + } + + QPushButton#okButton:hover { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #3B82F6, + stop:1 #2277EF); + border-color: #2277EF; + } + + QPushButton#okButton:pressed { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #1976D2, + stop:1 #1565C0); + border-color: #1565C0; + } + + /* 取消按钮样式 - 使用项目灰色主题 */ + QPushButton#cancelButton { + background-color: #F9FAFB; + color: #6B7280; + border: 1px solid #E5E7EB; + } + + QPushButton#cancelButton:hover { + background-color: #F3F4F6; + border-color: #D1D5DB; + color: #4B5563; + } + + QPushButton#cancelButton:pressed { + background-color: #E5E7EB; + border-color: #9CA3AF; + color: #374151; + } + """