728x90
728x90
QAction에서 triggered 시그널을 사용할 때, 인자를 triggered 메서드에 전달하는 방법
- PyQt의 @QAction@에서 @triggered@ 시그널을 사용할 때, 인자를 @triggered@ 메서드에 전달하는 방법을 알아보자.
람다 함수 사용하기
action = QAction("My Action", parent)
action.triggered.connect(lambda: my_function(arg1, arg2))
my_function
은arg1
과arg2
를 인자로 받는 함수이다.triggered
시그널이 발생하면, 람다 함수가 호출되고my_function
이 호출된다.arg1
과arg2
는 람다 함수에서 직접 전달된다.
@functools.partial@ 사용하기
import functools
action = QAction("My Action", parent)
action.triggered.connect(functools.partial(my_function, arg1, arg2))
- @functools.partial@ 함수는 함수와 인자를 받아 새로운 함수를 생성하는 역할을 한다.
- 위의 예제에서 @my_function@에 @arg1@과 @arg2@를 부분적으로 적용하여 새로운 함수를 생성하고, 이 함수를 @triggered@ 시그널에 연결한다.
Subclassing 사용하기
class MyAction(QAction):
def __init__(self, arg1, arg2, parent=None):
super().__init__("My Action", parent)
self.arg1 = arg1
self.arg2 = arg2
self.triggered.connect(self.triggered_handler)
def triggered_handler(self):
my_function(self.arg1, self.arg2)
action = MyAction(arg1, arg2, parent)
- @MyAction@ 클래스를 정의하고 @QAction@을 상속받은 후, 생성자에서 @arg1@과 @arg2@를 인스턴스 변수로 저장하고, @triggered@ 시그널을 @triggered_handler@ 메서드에 연결한다.
- @triggered_handler@ 메서드에서는 @my_function@을 호출하고 @arg1@과 @arg2@를 전달한다.
- 이렇게 작성된 @MyAction@ 클래스의 인스턴스를 생성하여 사용한다.
728x90
728x90
'Framework > PyQt' 카테고리의 다른 글
[PyQt] 맥(Mac)에서 윈도우(Windows)와 비슷하게 메뉴 표시하는 방법 (0) | 2023.09.21 |
---|---|
[PyQt] QTableWidget에 1,000 단위로 쉼표(,)를 추가하고 숫자 정렬 기능 추가하기 (0) | 2023.07.20 |
[PyQt] 간단한 CRUD(Create, Read, Update, Delete) 프로그램 (0) | 2023.07.18 |
[PyQt] QTimer.singleShot 함수를 특정 시간 간격으로 여러번 실행하는 방법 (0) | 2023.07.16 |
[PyQt] QClipboard.Clipboard와 QClipboard.Selection의 차이점 (0) | 2023.07.07 |
[PyQt] 커스텀 아이콘 패키지(fugueicons) 설치 및 사용해보기 (0) | 2023.07.05 |
[PyQt] style().standardIcon() 메서드에서 사용할 수 있는 아이콘 종류 및 숫자 (1) | 2023.05.17 |
[PyQt] PyQt5에서 QWebView 사용하기 (0) | 2023.05.16 |