출처: https://stackoverflow.com/questions/13050810/pyqt-button-clicked-name
self.sender():
클릭된 버튼의 객체를 가져오는 PyQt의 메소드.
버튼을 클릭했을 때 연결해 놓은 함수 내에 self.sender() 를 사용하면 클릭한 버튼의 이름을 가져오는 등의 방법을 사용할 수 있다.
이 때 버튼의 이름을 가져오려면, .text()기능을 사용해야 한다.
버튼을 클릭하는 간단한 예제
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
sample_btn = QPushButton('버튼')
sample_btn.clicked.connect(self.btn_clicked)
self.sample_lab = QLabel('버튼이 클릭되지 않았습니다.')
layout.addWidget(sample_btn)
layout.addWidget(self.sample_lab)
self.setLayout(layout)
def btn_clicked(self):
sending_button = self.sender()
# btn_name = sending_button.text()
self.sample_lab.setText(f'{sending_button.text()}이 선택되었습니다!')
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())
코드 설명
layout = QVBoxLayout()
sample_btn = QPushButton('버튼')
sample_btn.clicked.connect(self.btn_clicked)
QVBoxLayout()으로 기본 레이아웃을 만든다.
그리고 QPushButton으로 '버튼'이름을 가진 sample_btn을 만든다.
sample_btn을 클릭했을 때(clicked), btn_clicked 함수로 이동하도록(connect) 설정한다.
self.sample_lab = QLabel('버튼이 클릭되지 않았습니다.')
라벨을 하나 만든다. 이 라벨에는 '버튼이 클릭되지 않았습니다'라는 글이 씌여있다.
함수에 연결시킬 것이기 때문에 self.를 앞에 붙여준다.
layout.addWidget(sample_btn)
layout.addWidget(self.sample_lab)
self.setLayout(layout)
레이아웃에 addWidget으로 위젯을 하나씩 추가해 준다.
sample_btn, saple_lab을 추가해 준다.
def btn_clicked(self):
sending_button = self.sender()
# btn_name = sending_button.text()
self.sample_lab.setText(f'{sending_button.text()}이 선택되었습니다!')
버튼이 클릭될때 불러와지는 함수
self.sender()로 sample_btn의 메서드를 가져온다.
이 가져온 메서드는 sending_button에 저장된다.
그리고 sending_button.text()를 하면 버튼의 이름이 불러와진다.
self.sample_lab.setText(f'{sending_button.text()}이 선택되었습니다!')
이렇게 작성했지만
def btn_clicked(self):
sending_button = self.sender()
btn_name = sending_button.text()
self.sample_lab.setText(f'{btn_name}이 선택되었습니다!')
이렇게 btn_name이라는 변수를 만들어서 버튼의 이름을 불러오는 부분을 따로 만들어 가져와도 상관없다.
가위바위보 만드는 과정에서 각 버튼의 이름을 가져오려고 공부한 내용을 정리해 봤다.
'개발공부 > Pyqt 파이큐티' 카테고리의 다른 글
[PyQt] 파이큐티와 qt designer활용해 행맨 만들기 (0) | 2023.05.05 |
---|---|
[PyQt] 파이큐티 콘솔창에서 다운로드하기 (0) | 2023.05.04 |
[파이큐티] 허접한 가위바위보 게임 만들기 (0) | 2023.05.04 |
[파이큐티] 간단한 단어조합표 만들기 (0) | 2023.05.04 |
[파이큐티] qt designer 사용하기 (0) | 2023.05.03 |