2015-06-23 49 views
0

我在我的程序中有3個QpushButton(x,y,z)。當另一個QpushButton(x)處於可檢查模式時,我必須設置2個按鈕(y,z)被禁用。 雖然處於Checkable模式的X應該被禁用。 我該怎麼做? 在此先感謝..當另一個被檢查時禁用兩個QPushButton

我的代碼:

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

期望的行爲:一個可檢查的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_()) 
相關問題