选中另一个时禁用两个QPushButton

2024-09-27 21:35:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序中有3QpushButton(x,y,z)。当另一个QpushButton(x)处于可检查模式时,我必须设置2个按钮(y,z)被禁用。 当X处于可检查模式时,其他应被禁用。 我该怎么做? 提前谢谢。。在

我的代码:

    self.btn_mpgX.setCheckable(True)
    self.btn_mpgY.setEnabled(False);
    self.btn_mpgZ.setEnabled(False);
    self.btn_mpgX.toggled.connect(self.btn_mpgXuncheckable)

def btn_mpgXuncheckable(self):
    self.btn_mpgY.setEnabled(True);
    self.btn_mpgZ.setEnabled(True);
    self.btn_mpgX.toggled.connect(self.initUI) 

Tags: self程序falsetrueconnect模式按钮btn
1条回答
网友
1楼 · 发布于 2024-09-27 21:35:10

Expect行为:一个可检查的QPushButton(X),当选中/取消选中时,禁用/启用两个常规的QPushButton(Y和Z)(如果我错了,请纠正我)

在示例代码中,可以使用信号toggled(bool checked)。布尔值允许您知道按钮是选中还是未选中,您可以相应地启用/禁用其他按钮。在

import sys
import PyQt4.QtCore as QtCore
import PyQt4.QtGui as QtGui

class MyWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)

        self.buttonX=QtGui.QPushButton("X")
        self.buttonY=QtGui.QPushButton("Y")
        self.buttonZ=QtGui.QPushButton("Z")

        self.buttonX.setCheckable(True)
        self.buttonX.toggled.connect(self.on_check_X)

        #layout
        hbox=QtGui.QHBoxLayout()
        hbox.addWidget(self.buttonX)
        hbox.addWidget(self.buttonY)
        hbox.addWidget(self.buttonZ)
        self.setLayout(hbox)

    def on_check_X(self,is_toggle):
        if is_toggle:
            self.buttonY.setEnabled(False)
            self.buttonZ.setEnabled(False)
        else:
            self.buttonY.setEnabled(True)
            self.buttonZ.setEnabled(True)

if __name__ == "__main__":  
    app = QtGui.QApplication(sys.argv)
    win= MyWidget()
    win.show()    
    sys.exit(app.exec_())

相关问题 更多 >

    热门问题