0

次のように、paintEvent() で for ループを使用して複数のモジュールを呼び出したい

 def fun1(self,paint,a,b):
     do something ...
 def fun2(self,paint,a,b):
     do something ...
 def fun3(self,paint,a,b):
     do something .... 

 def paintEvent(self,event=None):
     for i in range (1,3):
        self.fun[i](self,paint,a,b)

基本的に私のfun1、fun2、fun3はいくつかのウィジェットを描画しており、ほとんど同じです。for ループを使用してこれらの関数を呼び出す方法を教えてください。

4

2 に答える 2

3

次のようなことができます:

def fun1(self,paint,a,b):
    do something ...
def fun2(self,paint,a,b):
    do something ...
def fun3(self,paint,a,b):
    do something .... 

self.fun = [self.fun1,self.fun2,self.fun3]

def paintEvent(self,event=None):
    for i in range (1,3):
       self.fun[i](self,paint,a,b)

fun1、fun2、fun3 がほぼ同じである場合は、それらを 1 つの関数にまとめて、追加の引数で呼び出すことを検討する必要があります。

于 2012-10-17T17:32:15.223 に答える
2

次のようなことができます:

def fun1(self, paint, a, b):
    pass

def fun2(self, paint, a, b):
    pass

def fun3(self,paint, a, b):
    do something .... 


def paintEvent(self, event=None):
    functions = [self.fun1, self.fun2, self.fun3]
    for func in functions:
        func(paint, a, b)

または、同様の命名パターンを持っているように、関数名について確信がある場合は、これでも機能する可能性があります。

def paintEvent(self, event=None):
    for attr_name in dir(self):
        if attr_name.startswith('fun'):
            func = getattr(self, attr_name)
            func(paint, a, b)
于 2012-10-17T17:32:56.363 に答える