callable 인자에 함수+input parameter 같이 전달하기

yeonsoo·2023년 5월 4일
0

open3D로 GUI 작업을 하던 중 button을 누를때 소환할 콜백함수가 인자를 필요로 할 경우 어떻게 처리할지 헤매다가 아래 방법 발견
cpp에서는 ros callback이나 thread함수 쓸 때 많이 있어왔던 상황이지만 파이썬으로는 처음 구현해봤다
cpp의 바인딩 함수 역할을 해주는 요 functools 모듈을 사용해준다

import functools
self.cam1_enter_b.set_on_clicked(functools.partial(self.enter_img_idx, 1))

set_on_clicked 함수에 인자로 들어가는 콜백함수를 이렇게 input param과 바인딩해서 넣지 않고 아래처럼 input param과 함께 콜 하면 input param도 제대로 안들어가고 콜백이 작동을 안함

self.cam1_enter_b.set_on_clicked(self.enter_img_idx(1)) # 오답

참고: https://stackoverflow.com/questions/2347388/python-passing-a-function-with-parameters-as-parameter

profile
to be enterprising

0개의 댓글