- PyQt5 Tutorial - 파이썬으로 만드는 나만의 GUI 프로그램
- 1. PyQt5 소개 (Introduction)
- 2. PyQt5 설치 (Installation)
- 3. PyQt5 기초 (Basics)
- 4. PyQt5 레이아웃 (Layout)
- 5. PyQt5 위젯 (Widget)
- QPushButton
- QLabel
- QCheckBox
- QRadioButton
- QComboBox
- QLineEdit
- QLineEdit (Advanced)
- QProgressBar
- QSlider & QDial
- QSplitter
- QGroupBox
- QTabWidget
- QTabWidget (Advanced)
- QPixmap
- QCalendarWidget
- QSpinBox
- QDoubleSpinBox
- QDateEdit
- QTimeEdit
- QDateTimeEdit
- QTextBrowser
- QTextBrowser (Advanced)
- QTextEdit
- QTableWidget
- QTableWidget (Advanced)
- 6. PyQt5 다이얼로그 (Dialog)
- 7. PyQt5 시그널과 슬롯 (Signal&Slot)
- 8. PyQt5 그림 그리기 (Updated)
- 9. PyQt5 실행파일 만들기 (PyInstaller)
- 10. PyQt5 프로그램 예제 (Updated)
- ▷ PDF ebook
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
QPushButton¶
푸시 버튼 (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로 설정하면, 버튼을 사용할 수 없게 됩니다.