pyqt5通过下拉框触发条件设置按钮是否可用
*效果为下拉框中为考核人员时,下面两个按钮不可用
为管理人员时,恢复为全部都可用 *
代码实现:
首先在class中先声明,大概可以理解为设置个类中的全局变量吧
class ManageWindow(QMainWindow):
seqRecordEnd = pyqtSignal()
trainFinished = pyqtSignal()
btnHistory = None
btnMark = None
btnTrain = None
def __init__(self):
...................
类中初始化的方法中还是一样的写:
下拉框初始化
def setRightUI(self, right):
# 训练,评判,测试, 历史记录
vbox = QVBoxLayout()
vbox.setAlignment(Qt.AlignVCenter)
self.people_choose = QComboBox()
self.people_choose.setFont(QFont('微软雅黑', 15))
self.people_choose.setStyleSheet("QComboBox{background:white}")
self.people_choose.setMinimumSize(175, 30)
self.people_choose.addItem('未选择使用人员')
self.people_choose.addItems(["考核人员", "管理人员"])
self.people_choose.currentIndexChanged.connect(self.changePeople)
vbox.addWidget(self.people_choose)
按钮初始化
def setRightUI(self, right):
vbox = QVBoxLayout()
vbox.setAlignment(Qt.AlignVCenter)
self.btnHistory = QPushButton('历史记录')
self.btnHistory.setMinimumHeight(170)
self.btnHistory.setFont(QFont('微软雅黑', 25))
self.btnHistory.clicked.connect(self.onBtnHistory)
self.btnHistory.setStyleSheet(
'''QPushButton{background:#54FF9F;border-radius:5px;}QPushButton:hover{background:LawnGreen;}''')
vbox.addWidget(self.btnHistory)
然后再写下拉框的选择触发事件的函数
def changePeople(self):
people = self.sender().currentText()
if people == "未选择使用人员":
self.people = None
elif people == "考核人员":
self.people = people
QMessageBox.information(self, '注意', '你仅有考核评判权限,请按照要求进行考核 \n(考核评判:选中参与考核的人员>>>选择考核课程>>>点击考核评判)',
QMessageBox.Ok)
self.btnTrain.setEnabled(False)
self.btnMark.setEnabled(False)
elif people == "管理人员":
self.people = people
QMessageBox.information(self, '提示', ' 你拥有软件所有权限,按照需求使用各种功能 \n 1.考核评判:选中参与考核的人员>>>选择考核课程>>>点击考核评判 \n '
'2.训练模型:点击语音标注进行纠错>>>返回主界面点击机器学习 \n 3.查看历史记录', QMessageBox.Ok)
self.btnHistory.setEnabled(True)
self.btnTrain.setEnabled(True)
self.btnMark.setEnabled(True)
else:
self.people = people