43258


pyqt5でボタンを押せないようにしたり、押せるようにしたいです。例えば下のコード

[code]

    import sys
    from PyQt5.QtWidgets import (QWidget,
        QVBoxLayout, QHBoxLayout, QApplication, QPushButton, QLabel, QLineEdit)
    from PyQt5 import*
    
    class Example(QWidget):
    
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
    
        def initUI(self):
            font=QtGui.QFont("00コミック7",20)
    
            # ラベル名の設定
            lbl1 = QLabel('１行目')
            lbl1.setFont(font)
            lbl2 = QLabel('２行目')
            lbl2.setFont(font)
            lbl3 = QLabel('３行目')
            lbl3.setFont(font)
    
            self.edit1=QLineEdit()
            self.edit1.setFont(font)
            self.edit2=QLineEdit()
            self.edit2.setFont(font)
            self.edit3=QLineEdit()
            self.edit3.setFont(font)
    
            btn1=QPushButton("1")
            btn1.setFont(font)
            btn1.setStyleSheet("background-color: #ffcf54")
            btn2=QPushButton("2")
            btn2.setFont(font)
            btn2.setStyleSheet("background-color: #ffcf54")
            btn3=QPushButton("3")
            btn3.setFont(font)
            btn3.setStyleSheet("background-color: #ffcf54")
    
            firstlayout=QHBoxLayout()
            firstlayout.addWidget(lbl1)
            firstlayout.addWidget(self.edit1)
            firstlayout.addWidget(btn1)
    
            secondlayout=QHBoxLayout()
            secondlayout.addWidget(lbl2)
            secondlayout.addWidget(self.edit2)
            secondlayout.addWidget(btn2)
    
            thirdlayout=QHBoxLayout()
            thirdlayout.addWidget(lbl3)
            thirdlayout.addWidget(self.edit3)
            thirdlayout.addWidget(btn3)
    
            layout=QVBoxLayout()
            layout.addLayout(firstlayout)
            layout.addLayout(secondlayout)
            layout.addLayout(thirdlayout)
    
            self.setLayout(layout)
    
            self.setWindowTitle('Absolute')    
            self.show()
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
[/code]

これを実行すると次のようなGUIが出来ます。  
[![画像](https://i.stack.imgur.com/YFIxn.png)](https://i.stack.imgur.com/YFIxn.png)  
ここで、例えば一つ目のボタンを押せないようにする(押しっぱなしのような状態？)にするにはどのようにしたらよいのでしょうか。


CC BY-SA 3.0
2018-04-15T07:03:25.700
43255
2018-04-15T07:58:11.153
26529
question
python pyqt
pyqt5でボタンを押せないようにしたい


単に押せないようにするのであれば、`setEnabled(False)`でよいと思います。  
(押せるようにするには`setEnabled(True)`です)

[code]

    # ボタン1を押せなくする
    btn1.setEnabled(False)
    
[/code]

＃`QWidget`クラスのメソッドです。(`QPushButton`に継承されている)

何かの処理契機で呼びだせば画面に反映されます。


CC BY-SA 3.0
2018-04-15T07:58:11.153
43258
2018-04-15T07:58:11.153
20098
43255
answer