[PyKDE] PyQt not refing slot methods
    Rob W.W. Hooft 
    rob at hooft.net
       
    Mon Sep  2 13:31:01 BST 2002
    
    
  
Adding to an old discussion: It is not only for lambda's that it would
be nice if slot methods would be refcounted: I am consistently using a 
"Command" class myself for slot actions (see appended code). Creating a 
slot using "connect(....,MethodCommand(self.takeAction))" now requires 
the _lst hack....
_lst=[]
class Command:
     def __init__(self):
         _lst.append(self) # Qt doesn't keep a reference! Memory leak!
     def __call__(self,*args,**kw):
	try:
	    return self.Execute(*args,**kw)
	except KeyboardInterrupt:
	    pass
class MethodCommand(Command):
     def __init__(self,method):
	self.method=method
         Command.__init__(self)
     def Execute(self,*args,**kw):
	return self.method()
class MethodArgsCommand(Command):
     def __init__(self,method,*args,**kw):
         Command.__init__(self)
	self.method=method
	self.args=args
	self.kw=kw
     def Execute(self,*args,**kw):
	return self.method(*self.args,**self.kw)
-- 
Rob W.W. Hooft  ||  rob at hooft.net  ||  http://www.hooft.net/people/rob/
    
    
More information about the PyQt
mailing list