PyQt 예제 1.8.2

지난 번에 이어서, 이번에는 lambda 함수를 이용해서 구현하는 방법을 소개하겠다.
-__version__ = "1.8.1"
+__version__ = "1.8.2"
 
 class Form(QDialog):
     def __init__(self, parent=None):
@@ -93,11 +92,11 @@ class Form(QDialog):
                         signal_spinCountLabel3.setText)
 
         self.connect(connect_button1, SIGNAL("clicked()"),
-                        partial(self.Connect_ButtonClick, "Button1"))
+                lambda name="Button1": self.Connect_ButtonClick(name))
         self.connect(connect_button2, SIGNAL("clicked()"),
-                        partial(self.Connect_ButtonClick, "Button2"))
+                lambda name="Button2": self.Connect_ButtonClick(name))
         self.connect(connect_button3, SIGNAL("clicked()"),
-                        partial(self.Connect_ButtonClick, "Button3"))
+                lambda name="Button3": self.Connect_ButtonClick(name))
 
         self.setWindowTitle("Main Dialog")
간단히 connect 되는 부분만 변경되었다.

지난 번과 아주 비슷하게 단순히 partial 부분을 lambda 로 변경하면 된다. lambda 함수에 인자를 주고, 그 인자를 메소드로 넘겨주면 된다.

단, 이 방법은 PyQt 4.1.1 이후로 가능하다. 그 이전은 지난 번과 같은 이유 때문에 사용할 수 없었다.

댓글 없음:

댓글 쓰기