QPushButton


../_images/4_1_qpushbutton_sample.png

../_images/4_1_qpushbutton_sample2.png

푸시 버튼 (push button) 또는 명령 버튼 (command button)은 사용자의 명령에 따라 프로그램이 어떤 동작을 하도록 할 때 사용되는 버튼이며, GUI 프로그래밍에서 가장 중요하고 흔하게 사용되는 위젯입니다.

푸시 버튼은 QPushButton 클래스로 만들 수 있는데, 푸시 버튼과 함께 자주 쓰이는 메서드와 시그널을 아래 표에 정리했습니다. (QPushButton 공식 문서 참고)


  • 자주 쓰이는 메서드

메서드

설명

setCheckable()

True 설정 시, 누른 상태와 그렇지 않은 상태를 구분합니다.

toggle()

상태를 바꿉니다.

setIcon()

버튼의 아이콘을 설정합니다.

setEnabled()

False 설정 시, 버튼을 사용할 수 없습니다.

isChecked()

버튼의 선택 여부를 반환합니다.

setText()

버튼에 표시될 텍스트를 설정합니다.

text()

버튼에 표시된 텍스트를 반환합니다.


  • 자주 쓰이는 시그널

시그널

설명

clicked()

버튼을 클릭할 때 발생합니다.

pressed()

버튼이 눌렸을 때 발생합니다.

released()

버튼을 눌렀다 뗄 때 발생합니다.

toggled()

버튼의 상태가 바뀔 때 발생합니다.


이제 QPushButton 클래스를 이용해서 다양한 종류의 푸시 버튼을 만들어보겠습니다.


예제

## Ex 5-1. QPushButton.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        btn1 = QPushButton('&Button1', self)
        btn1.setCheckable(True)
        btn1.toggle()

        btn2 = QPushButton(self)
        btn2.setText('Button&2')

        btn3 = QPushButton('Button3', self)
        btn3.setEnabled(False)

        vbox = QVBoxLayout()
        vbox.addWidget(btn1)
        vbox.addWidget(btn2)
        vbox.addWidget(btn3)

        self.setLayout(vbox)
        self.setWindowTitle('QPushButton')
        self.setGeometry(300, 300, 300, 200)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

세 개의 다양한 푸시 버튼을 만들었습니다.



설명

btn1 = QPushButton('&Button1', self)
btn1.setCheckable(True)
btn1.toggle()

QPushButton 클래스로 푸시 버튼을 하나 만듭니다. 첫번째 파라미터로는 버튼에 표시될 텍스트, 두번째는 버튼이 속할 부모 클래스를 지정해줍니다.

버튼에 단축키 (shortcut)를 지정하고 싶으면 아래와 같이 해당 문자 앞에 앰퍼샌드 (ampersand, &)를 넣어주면 됩니다. 이 버튼의 단축키는 ‘Alt+b’가 됩니다.

setCheckable()을 True로 설정해주면, 선택되거나 선택되지 않은 상태를 유지할 수 있게 됩니다.

toggle() 메서드를 호출하면 버튼의 상태가 바뀌게 됩니다. 따라서 이 버튼은 프로그램이 시작될 때 선택되어 있습니다.


btn2 = QPushButton(self)
btn2.setText('Button&2')

setText() 메서드를 사용해서 버튼에 표시될 텍스트를 지정할 수도 있습니다.

이 버튼의 단축키는 ‘Alt+2’가 됩니다.


btn3 = QPushButton('Button3', self)
btn3.setEnabled(False)

setEnabled()를 False로 설정하면, 버튼을 사용할 수 없게 됩니다.



결과

../_images/4_1_qpushbutton.png ../_images/4_1_qpushbutton_mac.png

그림 5-1. 푸시 버튼 만들기.



이전글/다음글

다음글 :