我的程序中有3个QpushButton
(x,y,z)。我必须将2个按钮(y,z)设置为禁用,而另一个QpushButton(x)处于可检查模式。
当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)
答案 0 :(得分:0)
预期行为:一个可检查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_())