일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- pythongui
- 비주얼베이직
- Windows10
- office
- Outlook
- Excel
- 오피스
- Windows11
- VBA
- Android
- python
- pandas
- 엑셀
- windows
- 파이썬3
- 윈도우11
- git
- 파이썬
- matlab
- 윈도우10
- pyqt5
- 파워포인트
- 아웃룩
- python3
- html
- 깃
- 문자열
- 안드로이드
- win32com
- 파이썬GUI
Appia의 IT세상
파이썬[Python GUI, PyQt5 Tutorial 004] PyQt5 버튼(QPushButton)의 이벤트 연결 본문
파이썬[Python GUI, PyQt5 Tutorial 004] PyQt5 버튼(QPushButton)의 이벤트 연결
Appia 2020. 6. 11. 07:12파이썬[Python GUI, PyQt5 Tutorial 004] PyQt5 버튼(QPushButton)의
이벤트 연결
앞서 포스팅에서는 위젯(QWidget)에 버튼(QPushButton)을 입력하는 방법에 대해서 살펴봤습니다. 이번 포스팅에서는 이 버튼에 특정 동작들을 연결해보도록 하겠습니다. 먼저, 버튼의 동작에는 크게 3가지로 볼 수 있습니다. 그럼 각 행동들에 대해서 살펴보면 다음과 같습니다.
pressed() | 버튼이 눌러졌을 때 |
released() | 버튼이 눌렀다 뗄 때 |
clicked() | 버튼이 클릭되었을 경우 |
위에 세가지 동작들에 대해서 코드 상에 적용해보도록 하겠습니다. \\
<example>
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class QtGUI(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Appia Qt GUI") self.resize(300, 300) button = QPushButton(self) button.setText("Button") button.setCheckable(True) button.move(10,10) button.pressed.connect(self.print_example) self.setWindowTitle("Appia Qt GUI") self.show() def print_example(self): print("OK") if __name__ == '__main__': app = QApplication(sys.argv) ex = QtGUI() app.exec_() | cs |
위의 코드를 실행화면 다음과 같은 GUI가 나타납니다.
위의 GUI에서 버튼을 클릭하면, python 콘솔 상에 다음과 같이 OK가 나타납니다.
위의 코드를 화면 살펴보겠습니다.
def print_example(self): print("OK") | cs |
먼저 위의 QtGUI 클래스 안에 버튼이 눌러졌을 때, 실행하는 동작에 대해서 명시를 해줍니다. 위에서 보이는 코드를 보면 print("OK")로 명시하여 파이썬(Python) 콘솔에 "OK"를 표시하게 해주기 위해서 입니다.
button.pressed.connect(self.print_example) | cs |
위의 코드에서 즉 버튼이 눌려졌을 때 위에서 선언한 print_example 함수가 실행되게 합니다. 이와 같은 방법으로 연결을 합니다. 여기에서는 인자값이 없는 함수를 연결할 때는 그냥 사용해도 됩니다.
그럼 위의 부분을 조금 수정해서 인자값이 있는 함수를 연결하는 방법에 대해서도 살펴보겠습니다. 먼저 버튼에 쓰여진 텍스트를 읽어오는 방법으로 다음을 이용해보도록 하겠습니다. 다음 코드를 살펴보겠습니다.
def print_but(self, vbutton): print(vbutton.text()) | cs |
먼저, 위와 같은 클래스안에 vbutton이라는 인자를 받아서 이 버튼을 토대로, 버튼에 명시된 텍스트 값을 콘솔에 출력하는 함수를 생성해보겠습니다. 위에서 사용한 방법을 활용해서 다음과 같은 코드를 작성했다고 과정하겠습니다.
button.pressed.connect(self.print_but(button)) | cs |
Button Traceback (most recent call last): File "D:/BlogProject/QT_Tutorial_004.py", line 53, in <module> ; ex = QtGUI() File "D:/BlogProject/QT_Tutorial_004.py", line 20, in __init__ button.pressed.connect(self.print_but(button)) TypeError: argument 1 has unexpected type 'NoneType' | cs |
이런 부분의 에러를 방지하기 위해서 위의 코드를 조금 수정하겠습니다.
button.pressed.connect(lambda: self.print_but(button)) | cs |
GUI를 실행하여 버튼을 클릭하면 다음과 같이 콘솔에 버튼에 입력된 텍스트를 출력해줍니다.
위에서 본 두 가지 방법을 바탕으로 조합하여 다음과 같은 코드를 한번 생성하였습니다.
<example>
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class QtGUI(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Appia Qt GUI") self.resize(300, 300) button = QPushButton(self) button.setText("Button") button.setCheckable(True) button.move(10,10) button.pressed.connect(self.print_example) button1 = QPushButton('Button1', self) button1.move(10,40) button1.clicked.connect(lambda :self.print_but(button1)) self.setWindowTitle("Appia Qt GUI") self.show() def print_example(self): print("OK") def print_but(self, vbutton): print(vbutton.text()) if __name__ == '__main__': app = QApplication(sys.argv) ex = QtGUI() app.exec_() | cs |
위의 코드 실행 결과입니다.
각 버튼을 클릭하였을 때, 콘솔창에 나타나는 화면입니다.
이번 포스팅에서는 파이썬[Python GUI, PyQt5 Tutorial 004] PyQt5 버튼(QPushButton)의 이벤트 연결라는 주제로 살펴봤습니다. 참고로 이전 포스팅에서 다루었던 내용과 함꼐 보시면 도움이 될 것이라고 생각됩니다.
파이썬[Python GUI, PyQt5 Tutorial 003] PyQt5 버튼(QPushButton) 만들기
궁금하신 점이나, 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨 주시길 바랍니다. 감사합니다.
'Python > Python PyQt5 (GUI)' 카테고리의 다른 글
파이썬[Python GUI, PyQt5 Tutorial 006] PyQt5 라벨(QLabel)생성하기 - 텍스트 출력하기 (0) | 2020.06.15 |
---|---|
파이썬[Python GUI, PyQt5 Tutorial 005] PyQt5 버튼(QPushButton)의 클릭시 버튼 비활성화하기 (0) | 2020.06.13 |
파이썬[Python GUI, PyQt5 Tutorial 003] PyQt5 버튼(QPushButton) 만들기 (0) | 2020.06.09 |
파이썬[Python GUI, PyQt5 Tutorial 002] PyQt5 윈도우 창 띄우기/만들기 (0) | 2020.06.07 |
파이썬[Python GUI, PyQt5 Tutorial 001] PyQt5 설치하기 (2) | 2020.06.05 |