0810
parent
3dcca3632c
commit
321aec403b
@ -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;
|
||||
}
|
||||
"""
|
Loading…
Reference in New Issue